pandas - sql 执行失败 - 错误 - Pandas.to.sql()
问题描述
我想在数据库表中保存一个数据框。我做了什么 :
连接到 azure Sql server 数据库
import pyodbc
# Create
server = 'XXXXXXXXXXXXXXXXXXXX'
database = 'XXXXXXXXXXXXXXXXXXX'
username = 'XXXXXXXXXXXXXXXX'
password = 'XXXXXXXXXXXX'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
- 创建表
#create_table = """
CREATE TABLE forecast_data (
CompanyEndDate text,
Retailer text,
Store_Name text,
Category text,
Description text,
QtySold int);
cursor.execute(create_table)
cnxn.commit()
- 使用熊猫 to_sql
data.to_sql('forecast_data', con=cnxn)
我收到此错误:
ProgrammingError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/pandas/io/sql.py in execute(self, *args, **kwargs)
1680 try:
-> 1681 cur.execute(*args, **kwargs)
1682 return cur
ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'sqlite_master'. (208) (SQLExecDirectW)")
The above exception was the direct cause of the following exception:
DatabaseError Traceback (most recent call last)
7 frames
/usr/local/lib/python3.7/dist-packages/pandas/io/sql.py in execute(self, *args, **kwargs)
1691
1692 ex = DatabaseError(f"Execution failed on sql '{args[0]}': {exc}")
-> 1693 raise ex from exc
1694
1695 @staticmethod
DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'sqlite_master'. (208) (SQLExecDirectW)")
有人知道发生了什么吗?
解决方案
时import sqlalchemy
,可以使用to_sql
。
相关帖子:
import sqlalchemy
...
engine = sqlalchemy.create_engine(
"mssql+pyodbc://user:pwd@server/database",
echo=False)
data.to_sql('forecast_data', con=cnxn, if_exists='replace')
时import pyodbc
,可以使用to_sql
。
您的代码应如下所示。您也可以在下面的帖子中阅读我的答案。
推荐阅读
- aem - 在 AEM 中禁用 Sling 过滤器的参数
- python - 如何使用滚动平均值预测接下来的 3 个值而不创建新列
- excel - 使用VBA根据单元格格式(单元格背景颜色)有条件地选择Excel单元格值
- java - Java等于混乱
- java - 如何更改 Java HttpClient (SSLContext) 中使用的 TLS 扩展
- javascript - 一次只在搜索栏中显示 5 个结果
- windows - 如何创建 Windows 自定义虚拟打印机以将文档发送到远程服务器
- flutter - 通过 Flutter 中的容器传递滚动手势
- java - Is there a better way to store and retrieve the values of letters given by their position in the alphabet?
- java - Spring Kafka Group Coordinator 无效或不可用