gpt4 book ai didi

mysql - 使用 Pandas 插入 MySQL 替换内容

转载 作者:行者123 更新时间:2023-11-29 15:46:17 25 4
gpt4 key购买 nike

我正在尝试以下操作:

import sqlalchemy
import pandas as pd
con = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}:{3}/{4}'.format(user,password,host,port,db))
df = pd.DataFrame({'pass':["11","44","33"],'trust':[1,2,3],'name' : ['User 1', 'User 2', 'User 3']})
df.to_sql(con=con, name='check_data_5', if_exists='replace',index=False,method="multi")

上面的代码运行良好。我得到以下输出:

name pass  trust
User 1 11 1
User 2 44 2
User 3 33 3

但是当我尝试更改数据框中的数据并将值插入 MySQL 时,我收到了替换的输出:

df = pd.DataFrame({'pass':["2233","44","33"],'trust':[1,2,3],'name' : ['User 1', 'User 2', 'User 3']})
df.to_sql(con=con, name='check_data_5', if_exists='replace',index=False,method="multi")

以上语句的输出为:

name pass  trust
User 1 2233 1
User 2 44 2
User 3 33 3

而我期待的是:

name pass  trust
User 1 11 1
User 1 2233 1
User 2 44 2
User 3 33 3

我认为问题是因为表中没有主键。所以我先创建一个表,然后执行上面的序列,我收到了相同的响应。 :
使用查询创建表:

create_table = 'create table `check_data_5` (`name` varchar(255) COLLATE utf8mb4_bin, `trust` int(1) NOT NULL, `pass` varchar(255) COLLATE utf8mb4_bin NOT NULL UNIQUE,PRIMARY KEY(`pass`) )AUTO_INCREMENT=1;'

请让我知道我在此过程中缺少什么。我需要解决这个问题。我猜问题出在 Pandas 身上。使用Python 3.5.0

最佳答案

您似乎打算将 name 字段设为主键,而不是 pass

create_table = 'create table `check_data_5` (`name` varchar(255) COLLATE utf8mb4_bin, `trust` int(1) NOT NULL, `pass` varchar(255) COLLATE utf8mb4_bin NOT NULL UNIQUE, PRIMARY KEY(`name`) ) AUTO_INCREMENT=1;'

关于mysql - 使用 Pandas 插入 MySQL 替换内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com