【发布时间】:2020-04-19 16:11:48
【问题描述】:
我有一个数据框 df,我想执行一个查询以将数据框中的所有值插入到表中。基本上我试图加载为以下查询:
INSERT INTO mytable
SELECT *
FROM mydataframe
为此,我有以下代码:
import pyodbc
import pandas as pd
connection = pyodbc.connect('Driver={' + driver + '} ;'
'Server=' + server + ';'
'UID=' + user + ';'
'PWD=' + pass + ';')
cursor = connection.cursor()
query = 'SELECT * FROM [myDB].[dbo].[myTable]'
df = pd.read_sql_query(query, connection)
sql = 'INSERT INTO [dbo].[new_date] SELECT * FROM :x'
cursor.execute(sql, x=df)
connection.commit()
但是,我收到以下错误:
TypeError: execute() takes no keyword arguments
有谁知道我做错了什么?
【问题讨论】:
-
为什么不使用
read_sql的对应项和to_sql?不要注意后者需要 SQLAlchemy 连接(而不是像pyodbc这样的原始 DB-API 连接)。 -
我试过了,但是我发现了很多问题,比如“找不到数据源名称并且没有指定默认驱动程序 (0) (SQLDriverConnect)”)'
-
有关连接设置,请参阅 MS SQL Server 的 SQLAlchemy 文档:docs.sqlalchemy.org/en/13/dialects/…
标签: python sql-server pandas pyodbc