Python:使用 dataframe.to_sql 向 MySQL 添加主键

Posted

技术标签:

【中文标题】Python:使用 dataframe.to_sql 向 MySQL 添加主键【英文标题】:Python: Add primary key to MySQL with dataframe.to_sql 【发布时间】:2016-05-27 14:38:53 【问题描述】:

当我通过 db4free.net 将数据帧导出到 mysql 时,我当前的 python 代码正在运行。但是,现在我需要使用backand提供的另一个MySQL,我已经看到我创建的数据库表'KLSE'有一个主键问题(老实说,我不明白主键如何帮助我) . 我检查了 dataframe.to_sql 的文档,我注意到即使 index=True 也不意味着主键。我想知道可用于将主键添加到当前存在的 workaround 是什么。仅供参考,我从 backand 数据库中做了一个 dataframe.read_sql,我设法查询了数据(尽管在后面它显示错误为没有主键,因此我无法创建 REST API)。 以前的代码适用于 db4free.net MySQL,但 backand 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】:

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

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

alter table KLSE add id int primary key auto_increment;

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

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

【讨论】:

我在 python cur.execute("alter table KLSE modify ID int auto_increment primary key") 和 mysql 中添加命令,都返回 ERROR 1054 (42S22): Unknown column 'ID' in 'KLSE' @vindex,你试过了吗:alter table KLSE add id int primary key auto_increment; ,没有 id 列。我尝试alter table KLSE modify index int auto_increment 主键;它返回 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“index int auto_increment primary key”附近使用正确的语法 它可以在最后一列添加id。但是如果我使用python,我可以添加命令cur.excecute(“alter table KLSE add id int primary key auto_increment”)吗?我需要每天运行脚本并将数据导出到 MySQL。谢谢 让我们continue this discussion in chat.

以上是关于Python:使用 dataframe.to_sql 向 MySQL 添加主键的主要内容,如果未能解决你的问题,请参考以下文章

python使用cookie登陆网页

Python基础 -- Python环境的安装pip的使用终端运行python文件Pycharm的安装和使用Pycharm基本设置:设置Python文件默认格式

在python使用SSL(HTTPS)

python 爬虫使用方法分享——安装python

python基础之从认识python到python的使用

python文档翻译之使用python解释器