在MySQL中插入以使用Pandas替换内容

时间:2019-07-12 11:11:53

标签: mysql python-3.x pandas

我正在尝试以下操作:

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;'

请让我知道我在此过程中缺少的内容。我需要解决这个问题。我猜问题出在大熊猫身上。使用Python 3.5.0

1 个答案:

答案 0 :(得分: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;'