python - into - pandas sql server connection
pandas dataframe a la base de datos mariadb con to_sql y sqlalchemy (1)
El paso de motores sqlalchemy solo se admite a partir de pandas 0.14.0
Para usar to_sql
con la versión anterior de pandas, debe pasar la conexión sin engine.raw_connection()
) y flavor=''mysql''
a to_sql
:
myd.to_sql(name=''[tablename]'', con=engine.raw_connection(), flavor=''mysql'', if_exists=''replace'', index=False)
Sin embargo, recomiendo actualizar su versión de pandas (pasar las conexiones sin procesar está en desuso y ya no se admitirá en las versiones más recientes de pandas, entonces solo se admitirán los motores / conexiones sqlalchemy)
Quiero utilizar la función pandas to_sql para escribir un marco de datos en una base de datos MariaDB. Mi código Python dentro de PyCharm se ve de la siguiente manera:
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)
Cuando ejecuto la última línea en la consola obtengo el siguiente error:
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''
Aquí alguien tuvo el mismo error en un punto. Sin embargo, había desaparecido antes de que alguien resolviera el problema. ¿Sabes lo que está mal?