cercando di scrivere il dataframe dei panda sulla tabella MySQL usando to_sql. In precedenza utilizzava flavor = 'mysql', tuttavia in futuro verrà ammortizzato e si desidera avviare la transizione all'utilizzo del motore SQLAlchemy.Scrittura nel database MySQL con i panda utilizzando SQLAlchemy, to_sql
codicedi esempio:
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)
La lettura funziona bene, ma il to_sql ha un errore:
DatabaseError: Esecuzione non riuscita su SQL 'SELECT Nome FROM sqlite_master dove tipo =' table' e name = ?; ': Numero errato di argomenti durante la formattazione delle stringhe
Perché sembra che stia cercando di usare sqlite? Qual è l'uso corretto di una connessione sqlalchemy con mysql e in particolare mysql.connector?
Ho anche provato a passare il motore come connessione, e questo mi ha dato un errore in riferimento a nessun oggetto cursore.
data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)
>>AttributeError: 'Engine' object has no attribute 'cursor'
Devi passare il motore stesso, non una connessione prima (in futuro una connessione sqlalchemy sarà anche possibile, ma non un connessione raw). Puoi vedere se questo risolve il problema? – joris
Ah, vedo che l'hai già provato :-) Puoi mostrare l'errore che ottieni in quel caso? – joris
quando si utilizza engine: AttributeError: l'oggetto 'Engine' non ha attributo 'cursor' –