próbuje zapisać pandasową ramkę danych do tabeli MySQL za pomocą to_sql. Poprzednio używałem "smaku" = "mysql", jednak w przyszłości będzie on amortyzowany i chciał rozpocząć przejście do używania silnika SQLAlchemy.Zapisywanie do bazy danych MySQL przy użyciu Pand za pomocą SQLAlchemy, to_sql
kodpróbki:
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)
Odczyt działa dobrze ale to_sql zawiera błąd:
Databaseerror: Wykonanie nie powiodło się na sql 'SELECT nazwisko FROM sqlite_master GDZIE type =' table”i nazwa = ?; ': Zła liczba argumentów podczas formatowania ciągów znaków
Dlaczego wygląda na to, że próbuje używać sqlite? Jakie jest prawidłowe użycie połączenia sqlalchemy z mysql, a konkretnie mysql.connector?
Próbowałem również przekazać silnik jako połączenie, a to dało mi błąd odwołujący się do obiektu kursora.
data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)
>>AttributeError: 'Engine' object has no attribute 'cursor'
musiał przejść samego silnika, a nie surowy związek (w przyszłości połączenie sqlalchemy będzie również możliwe, ale nie jest to surowe połączenie). Czy widzisz, czy to rozwiązuje problem? – joris
Ach, widzę, że już to wypróbowałeś :-) Czy możesz pokazać błąd, który dostajesz w takim przypadku? – joris
podczas korzystania z silnika: AttributeError: obiekt "Engine" nie ma atrybutu "kursor" –