Ich möchte die Pandas-Funktion to_sql verwenden, um einen Datenrahmen in eine MariaDB-Datenbank zu schreiben. Mein Python-Code in PyCharm sieht wie folgt aus:Pandas Dataframe zu mariadb Datenbank mit to_sql und sqlalchemy
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
myd = pd.read_csv('/[path]/[filename].csv')
engine = create_engine('mysql+mysqlconnector://[user]:[pw]@127.0.0.1/[dbname]')
myd.to_sql(name='[tablename]', con=engine, if_exists='replace', index=False)
Wenn die letzte Zeile in der Konsole ausführen ich die folgende Fehlermeldung erhalten:
Error on sql SELECT name FROM sqlite_master WHERE type='table' AND name='[tablename]';
Traceback (most recent call last):
File "/usr/lib/python3.4/code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
File "/usr/lib/python3/dist-packages/pandas/core/frame.py", line 1261, in to_sql
self, name, con, flavor=flavor, if_exists=if_exists, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/io/sql.py", line 207, in write_frame
exists = table_exists(name, con, flavor)
File "/usr/lib/python3/dist-packages/pandas/io/sql.py", line 275, in table_exists
return len(tquery(query, con)) > 0
File "/usr/lib/python3/dist-packages/pandas/io/sql.py", line 90, in tquery
cur = execute(sql, con, cur=cur)
File "/usr/lib/python3/dist-packages/pandas/io/sql.py", line 44, in execute
cur = con.cursor()
AttributeError: 'Engine' object has no attribute 'cursor'
Here jemand an einem Punkt den gleichen Fehler hatte. Es war jedoch verschwunden, bevor jemand das Problem löste. Weißt du was falsch ist?
Normalerweise können Sie diesen Fehler erhalten, wenn Sie eine alte Pandas-Version verwenden (bevor sie sqlalchemy-Engines unterstützt). Können Sie die Ausgabe von 'pd .__ version__' anzeigen? – joris
Das gibt 0,13.1 - Ich muss Pandas aktualisieren, oder? – nluckn
Tatsächlich ist die minimale Version '0.14' dafür. Oder Sie können die rohe Verbindung ('' engine.raw_connection() '') und 'flavour = 'mysql'' übergeben (dies wird jedoch in neueren Versionen nicht mehr unterstützt). – joris