Python:使用dataframe.to_sql

时间:2016-05-27 14:38:53

标签: mysql python-2.7 pandas dataframe backand

当我通过db4free.net将数据框导出到MySQL时,我当前的python代码正常工作。但是,现在我需要使用backand提供的另一个MySQL,我已经看过数据库表,' KLSE'我创建的主键问题(老实说,我不明白主键如何帮助我)。 我查看了dataframe.to_sql的文档,我注意到即使index = True也不代表主键。我想知道我可以用来添加主键的变通方法到当前存在的是什么。仅供参考,我从backand数据库做了一个dataframe.read_sql,我设法查询数据(虽然在后面它显示错误,因为没有主键,因此我无法创建REST API)。 以前的代码适用于db4free.net MySQL但是返回MySQL的主键错误

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('mysql+mysqldb://abc:abc@abc')

df_2.to_sql(name='KLSE', con=engine, if_exists='replace')

我尝试使用MySQLdb库并添加主键,但KLSE表已经存在,因此无法创建。

import pandas as pd
import MySQLdb as mdb

engine = mdb.connect(host='abc',user='abc',passwd='pw',db='abc$default')
cur = engine.cursor()
cur.execute("INSERT INTO KLSE(Id INT PRIMARY KEY AUTO_INCREMENT, \Name VARCHAR(25))")
df_2.to_sql(name='KLSE', con=engine, if_exists='replace')

1 个答案:

答案 0 :(得分:1)

您只需添加一次主键即可。你可以这样做:

如果您想将列添加为PK(主键):

alter table KLSE add id int primary key auto_increment;

如果您的表已经有一个您将用作PK(主键)的列:

alter table KLSE modify <existing_column_name> int auto_increment primary key;