Я хочу использовать функцию pandas to_sql для записи данных в базу данных MariaDB. Мой код Python внутри PyCharm выглядит следующим образом:pandas dataframe в базу данных mariadb с to_sql и 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)
При выполнении последней строки в консоли я получаю следующее сообщение об ошибке:
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 кто имел такую же ошибку в одной точке. Однако он исчез, прежде чем кто-то решил проблему. Вы знаете, что не так?
Обычно вы можете получить эту ошибку, если используете старую версию pandas (до того, как она поддерживает движки sqlalchemy). Можете ли вы показать вывод 'pd .__ version__'? – joris
Что дает 0.13.1 - Мне нужно обновить панды, не так ли? – nluckn
Действительно, для этого минимальная версия составляет '0.14'. Или иначе вы можете передать необработанное соединение ('' engine.raw_connection() '') и 'flavor = 'mysql'' (но это больше не поддерживается в более новых версиях). – joris