【发布时间】:2017-10-19 03:59:20
【问题描述】:
我有一个包含许多不同列的 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 does not support python3,但是 pandas 的文档说它需要 SQLAlchemy 引擎才能连接到数据库。
有没有办法直接使用 python3 将我的 pandas 数据框输出到 mySQL 数据库中?
【问题讨论】:
-
SQLAlchemy 支持不同的 mySQL DBAPI,如 in the docs 所述。尝试使用其中列出的 API 之一。
-
嗨@Kristof,感谢您的评论。我设法让它与 mysql-connector 驱动程序一起工作。您愿意发表您的评论作为答案,以便我接受吗?