python-3.x - 如何解决使用 sqlalchemy 连接执行 pandas.to_sql() 时遇到的 InvalidRequestError?
问题描述
我正在尝试替换 MySQL 数据库中的现有表。我使用以下代码将调用的数据框转换frame
为数据库表:
import pandas as pd
import sqlalchemy
from sqlalchemy.types import VARCHAR
database_username = 'root'
database_password = '1234'
database_ip = 'localhost'
database_name = 'my_new_database'
database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.format(database_username, database_password, database_ip, database_name),pool_size=3,pool_recycle=3600)
frame.to_sql(schema=database_name,con=database_connection,name='table1',if_exists='replace',chunksize=1000,dtype={'Enrollment No': VARCHAR(frame.index.get_level_values('Enrollment No').str.len().max())})
table1
成功创建。但是当我重新运行上述代码的最后一行时frame.to_sql()
,它会抛出以下错误:
InvalidRequestError: Could not reflect: requested table(s) not available in Engine(mysql+mysqlconnector://root:***@localhost/my_new_database) schema 'my_new_database': (table1)
我想知道为什么当表已经存在时会抛出这个错误,即使我已经使用过if_exists='replace'
,为什么它只在第一次创建表时才能正常工作。必须做些什么来避免出现此错误?
注意:对类似问题的回答只建议使用小写的表名,我将表命名为'table1'
.
解决方案
推荐阅读
- javascript - JS 的工作流程/顺序如何:将函数与数组进行比较?
- c - 使用 Python 返回指向已经存在的内存地址的指针
- css - 如何调试悬停等伪元素?
- c# - 避免在不使用 Application.DoEvents() 的情况下阻塞表单
- javascript - 我可以使用 .sort() 根据数字属性对对象数组进行排序吗?
- c++ - "外部向量
开始解析(文件*);” - mysql - Sql 自连接以及不匹配的行
- javascript - 无法使用 Javascript 向 json 对象添加新的键和值
- java - 在java中使用命令行参数时没有得到正确的输出
- python-3.x - 使用 python 3.8 安装 scikit-learn 19.1 时出错