[英]Pandas dataframe to_sql method with python3
我有一个带有许多不同列的pandas数据框,并且希望将特定的列插入到mySQL数据库中。
我从文档中了解到,这样做的方法是像这样使用to_sql :
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
engine = create_engine(db)
data.to_sql(name='dbtable', con=engine, if_exists = 'append', index=False)
但是,当我在python3中运行此代码时,出现以下ImportError:
Traceback (most recent call last):
File "myfile.py", line 130, in <module>
engine = create_engine('mysql+mysqlconnector://user:password@localhost:port/db')
File "/home/pohzihow/.local/lib/python3.5/site-packages/sqlalchemy/engine/__init__.py", line 387, in create_engine
return strategy.create(*args, **kwargs)
File "/home/pohzihow/.local/lib/python3.5/site-packages/sqlalchemy/engine/strategies.py", line 80, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/home/pohzihow/.local/lib/python3.5/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 110, in dbapi
return __import__('MySQLdb')
ImportError: No module named 'MySQLdb'
经过研究后,我发现mySQLdb实际上不支持python3 ,但是有关pandas的文档说它需要SQLAlchemy引擎才能连接到数据库。
有没有一种方法可以直接使用python3将我的pandas数据帧输出到mySQL数据库中?
使用pymysql作为DBAPI扩展ƘɌỈSƬƠƑ的答案
import pandas as pd
import pymysql
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://USER:PASSWORD@HOST/DATABASE")
con = engine.connect()
data.to_sql(name='dbtable', con=engine, if_exists = 'append', index=False)
使用PyMySQL模块。 这是最新的版本,您需要在系统后台运行MySQL。 代码是这样的,
import pymysql, pandas as pd
part1 = pd.read_csv("your_file_location)
part2 = part1["Column 1 Name", "Column2 Name"]
#and further code of yours#
for i in your_pandas_dataset:
sql = "INSERT INTO your_table_name(your_column_attributes) \
VALUES ('%d', '%s', #and so on#) %\
(i[1], i[2],#and so on#)"
self.cursor.execute(sql)
self.db.commit()
您需要使用循环插入数据。 并将数据导入到SQL数据库中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.