notebook into data python pandas sqlalchemy mariadb mysql-connector

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?