2017-05-19 59 views
0

我有一個熊貓數據框與許多不同的列,並希望插入特定的列到MySQL數據庫。熊貓dataframe to_sql方法與python3

我從文檔中瞭解到,這樣做的方法是使用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運行它,我得到以下導入錯誤:

Traceback (most recent call last): 
    File "myfile.py", line 130, in <module> 
    engine = create_engine('mysql+mysqlconnector://user:[email protected]: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,但熊貓文檔說它需要SQLAlchemy引擎連接到數據庫。

有沒有一種方法可以直接使用python3將我的熊貓數據框輸出到mySQL數據庫中?

+1

SQLAlchemy支持不同的mySQL DBAPI,如[文檔]中所述(http://docs.sqlalchemy.org/en/rel_1_1/dialects/mysql.html)。嘗試使用其中列出的API之一。 –

+0

嗨@Kristof,謝謝你的評論。我設法讓它與mysql連接器驅動程序一起工作。你想發表你的評論作爲答案,以便我可以接受嗎? –

回答

1

SQLAlchemy支持不同的mySQL DBAPI,如in the docs所述。在寫這篇文章的時候,它們是:

  • 的MySQL的Python
  • PyMySQL
  • MySQL連接/ Python的
  • CyMySQL
  • OurSQL
  • 谷歌雲SQL
  • PyODBC
  • Jython的zxjdbc

嘗試使用其中一個列出的API而不是mySQLdb。

+1

你是否在to_sql中工作?你能更清楚地說明你是如何做到這一點的? –

0

使用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數據庫中。