Запись в базу данных MySQL с помощью pandas с использованием SQLAlchemy, to_sql

пытаясь написать pandas dataframe в таблицу MySQL, используя to_sql. Раньше использовался flavor = 'mysql', однако он будет обесцениваться в будущем и хотел бы начать переход к использованию механизма SQLAlchemy.

образец кода:

import pandas as pd import mysql.connector from sqlalchemy import create_engine engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False) cnx = engine.raw_connection() data = pd.read_sql('SELECT * FROM sample_table', cnx) data.to_sql(name='sample_table2', con=cnx, if_exists = 'append', index=False) 

Чтение отлично работает, но to_sql имеет ошибку:

DatabaseError: Выполнение не выполнено в sql 'SELECT name FROM sqlite_master WHERE type =' table 'AND name = ?;': Неверное количество аргументов во время форматирования строки

Почему это похоже на попытку использования sqlite? Каково правильное использование соединения sqlalchemy с mysql и, в частности, mysql.connector?

Я также попробовал передать движок в качестве соединения, и это дало мне ошибку, ссылаясь на объект курсора.

 data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False) >>AttributeError: 'Engine' object has no attribute 'cursor' 

2 Solutions collect form web for “Запись в базу данных MySQL с помощью pandas с использованием SQLAlchemy, to_sql”

Использование движка вместо выполняемого raw_connection ():

 import pandas as pd import mysql.connector from sqlalchemy import create_engine engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False) data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False) 

неясно, почему, когда я пробовал это вчера, он дал мне более раннюю ошибку

Кроме того, используйте пакет pymysql

 import pymysql from sqlalchemy import create_engine cnx = create_engine('mysql+pymysql://[user]:[pass]@[host]:[port]/[schema]', echo=False) data = pd.read_sql('SELECT * FROM sample_table', cnx) data.to_sql(name='sample_table2', con=cnx, if_exists = 'append', index=False) 
  • Как построить отношения «многие ко многим» с помощью SQLAlchemy: хороший пример
  • Как получить lng значение lat из результатов запроса геоалхимии2
  • Как сделать upsert с SqlAlchemy?
  • SQLAlchemy: как упорядочить результаты запроса (order_by) в поле отношений?
  • SQLAlchemy DateTime часовой пояс
  • SQLAlchemy: getter / setter в декларативном классе Mixin
  • Почему загрузка объектов SQLAlchemy через ORM 5-8x медленнее, чем строки через необработанный курсор MySQLdb?
  • Почему SQLAlchemy вставляет sqlite в 25 раз медленнее, чем использование sqlite3 напрямую?
  • Повесьте скрипт Python с помощью SQLAlchemy и многопроцессорности
  • Пример учебника sqlalchemy не работает
  • Как уловить ошибку 1062 «дублировать запись» независимо от используемой базы данных / движка?
  • Python - лучший язык программирования в мире.