嘗試使用to_sql將pandas數據框寫入MySQL表。以前一直使用flavor ='mysql',但是它將在未來貶值,並希望開始過渡到使用SQLAlchemy引擎。使用SQLAlchemy寫入MySQL數據庫,使用SQLAlchemy,to_sql
示例代碼:
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False)
cnx = engine.raw_connection()
data = pd.read_sql('SELECT * FROM sample_table', cnx)
data.to_sql(name='sample_table2', con=cnx, if_exists = 'append', index=False)
讀取工作正常,但to_sql有一個錯誤:
DatabaseError:執行失敗的SQL 'SELECT名字從SQLITE_MASTER其中type =' 表」 AND名字= ';':字符串格式化過程中的參數數量錯誤
爲什麼它看起來像試圖使用sqlite?什麼是sqlalchemy與mysql連接的正確使用,特別是mysql.connector?
我也嘗試過將引擎作爲連接傳遞,並且給了我一個引用無遊標對象的錯誤。
data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)
>>AttributeError: 'Engine' object has no attribute 'cursor'
你必須通過發動機本身,而不是原始連接(在未來的SQLAlchemy的連接也將是可能的,但不是原始連接)。你可以看看是否解決了這個問題? – joris
啊,我看到你已經試過:-)你能在這種情況下顯示你得到的錯誤嗎? – joris
使用引擎時:AttributeError:'引擎'對象沒有屬性'遊標' –