Maison >base de données >tutoriel mysql >Pourquoi le to_sql de Pandas échoue-t-il avec une erreur « Mauvais nombre d'arguments » lors de l'écriture sur MySQL ?

Pourquoi le to_sql de Pandas échoue-t-il avec une erreur « Mauvais nombre d'arguments » lors de l'écriture sur MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 15:20:11537parcourir

Why Does Pandas' to_sql Fail with a

Dépannage de l'écriture dans une base de données MySQL avec Pandas à l'aide de to_sql de SQLAlchemy

Lorsque vous essayez d'écrire un DataFrame Pandas dans une base de données MySQL à l'aide de la méthode to_sql de SQLAlchemy, vous pouvez rencontrer une erreur qui ressemble à :

DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master
WHERE type='table' AND name=?;': Wrong number of arguments during
string formatting

Cette erreur indique une divergence dans le SQL requête en cours d'exécution. Fait intéressant, cela suggère une tentative de sélection à partir d'une base de données SQLite au lieu de MySQL.

Pour résoudre ce problème et établir la connexion correcte avec MySQL à l'aide du moteur SQLAlchemy et de mysqlconnector, suivez ces étapes :

  • Utiliser l'objet moteur directement comme paramètre de connexion pour to_sql :
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine

# Create SQLAlchemy engine
engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False)

# Read and write using the engine connection
data = pd.read_sql('SELECT * FROM sample_table', engine)
data.to_sql(name='sample_table2', con=engine, if_exists='append', index=False)

Cette modification garantit que le La connexion utilisée à la fois pour la lecture et l'écriture est le moteur SQLAlchemy connecté à MySQL. Cela élimine la tentative initiale d'utilisation d'une connexion brute, qui aurait pu déclencher l'erreur liée à SQLite.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn