风到哪去了 2024-12-11 11:41 采纳率: 40%
浏览 14

python将dataframe写入mysql出大错了!

在执行下面的这个连接mysql数据库的简单的范例代码时,出错了。请问哪个帮帮忙看下?

import pandas as pd
from sqlalchemy import create_engine

# 示例DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'city': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)

# 数据库连接信息
username = 'root'
password = '******'
host = 'localhost'  # 例如 'localhost''127.0.0.1'
port = '3306'  # 例如 '3306'
database = 'abc'
table_name = 'ceshi'

# 创建数据库连接引擎
engine = create_engine(f'mysql+pymysql://{username}:{password}@{host}:{port}/{database}')

# 将DataFrame写入MySQL数据库
# 如果表不存在,将自动创建表。如果存在,将替换表中的数据(设置if_exists='replace')
# 若不想替换,可以使用if_exists='append'来追加数据,或使用if_exists='fail'来避免覆盖
df.to_sql(name=table_name, con=engine, if_exists='replace', index=False)

print("DataFrame has been written to MySQL database successfully.")

然后就出现了以下错误

C:\Users\abc\venv\python\Scripts\python.exe C:/Users/abc/python/修改/操作MySQL.py
Traceback (most recent call last):
  File "C:/Users/abc/python/修改/操作MySQL.py", line 26, in <module>
    df.to_sql(name=table_name, con=engine, if_exists='replace', index=False)
  File "C:\Users\abc\venv\python\lib\site-packages\pandas\core\generic.py", line 2882, in to_sql
    method=method,
  File "C:\Users\abc\venv\python\lib\site-packages\pandas\io\sql.py", line 708, in to_sql
    pandas_sql = pandasSQL_builder(con, schema=schema)
  File "C:\Users\abc\venv\python\lib\site-packages\pandas\io\sql.py", line 788, in pandasSQL_builder
    return SQLDatabase(con, schema=schema, meta=meta)
  File "C:\Users\abc\venv\python\lib\site-packages\pandas\io\sql.py", line 1410, in __init__
    meta = MetaData(self.connectable, schema=schema)
TypeError: __init__() got multiple values for argument 'schema'

Process finished with exit code 1


  • 写回答

1条回答 默认 最新

  • 普通网友 2024-12-11 13:11
    关注

    问答动态,遇到相同问题求解答;

    评论

报告相同问题?

问题事件

  • 创建了问题 12月11日