it-source

to_sql 및 sqlalchemy를 사용한 mariadb 데이터베이스로의 panda 데이터 프레임

criticalcode 2022. 12. 29. 20:32
반응형

to_sql 및 sqlalchemy를 사용한 mariadb 데이터베이스로의 panda 데이터 프레임

panda 함수 to_sql을 사용하여 데이터 프레임을 MariaDB 데이터베이스에 쓰고 싶습니다.PyCharm 내의 Python 코드는 다음과 같습니다.

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'

여기서 누군가가 같은 오류를 범했습니다.하지만 누군가가 문제를 해결하기도 전에 사라졌습니다.뭐가 문제인지 아세요?

sqalchemy 엔진 통과는 팬더 0.14.0부터 지원됩니다.

사용방법to_sql오래된 버전의 팬더에서는 raw connection을 통과해야 합니다.engine.raw_connection())와flavor='mysql'로.to_sql:

myd.to_sql(name='[tablename]', con=engine.raw_connection(), flavor='mysql', if_exists='replace', index=False)

그러나 팬더 버전을 업그레이드할 것을 권장합니다(원시 연결 통과는 권장되지 않으며 새로운 팬더 버전에서는 더 이상 지원되지 않습니다. 그러면 sqlalchemy 엔진/연결만 지원됩니다).

언급URL : https://stackoverflow.com/questions/38145382/pandas-dataframe-to-mariadb-database-with-to-sql-and-sqlalchemy

반응형