반응형
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
반응형
'it-source' 카테고리의 다른 글
Conda를 사용하여 Python 3.6으로 업그레이드하려면 어떻게 해야 하나요? (0) | 2023.01.03 |
---|---|
각도로 $on 및 $120 (0) | 2023.01.03 |
"액티비티로 인해 페이지가 만료되었습니다." - Larabel 5.5 (0) | 2022.12.29 |
Mysql 서비스가 없습니다. (0) | 2022.12.29 |
로컬 시간 문자열을 UTC로 변환하려면 어떻게 해야 합니까? (0) | 2022.12.29 |