Rumah >pangkalan data >tutorial mysql >Mengapa Pandas\' to_sql Gagal dengan Ralat \'Bilangan Argumen Yang Salah\' Semasa Menulis ke MySQL?

Mengapa Pandas\' to_sql Gagal dengan Ralat \'Bilangan Argumen Yang Salah\' Semasa Menulis ke MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-27 15:20:11517semak imbas

Why Does Pandas' to_sql Fail with a

Menyelesaikan Masalah Menulis ke Pangkalan Data MySQL dengan Panda Menggunakan to_sql SQLAlchemy

Apabila cuba menulis Pandas DataFrame ke pangkalan data MySQL menggunakan kaedah to_sql SQLAlchemy, anda mungkin menghadapi ralat yang menyerupai:

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

Ralat ini menunjukkan percanggahan dalam pertanyaan SQL yang sedang dilaksanakan. Menariknya, ia mencadangkan percubaan untuk memilih daripada pangkalan data SQLite dan bukannya MySQL.

Untuk membetulkan isu ini dan mewujudkan sambungan yang betul dengan MySQL menggunakan enjin SQLAlchemy dan mysqlconnector, ikut langkah berikut:

  • Gunakan objek enjin secara langsung sebagai parameter sambungan untuk 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)

Pengubahsuaian ini memastikan sambungan yang digunakan untuk membaca dan menulis ialah enjin SQLAlchemy yang disambungkan kepada MySQL. Ia menghapuskan percubaan awal untuk menggunakan sambungan mentah, yang mungkin telah mencetuskan ralat berkaitan SQLite.

Atas ialah kandungan terperinci Mengapa Pandas\' to_sql Gagal dengan Ralat \'Bilangan Argumen Yang Salah\' Semasa Menulis ke MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn