【发布时间】:2021-08-16 06:09:30
【问题描述】:
我想将数据框中的整行插入 pandas 中的 sql server。
我可以使用下面的命令插入,但是,我有 46+ 列,不想输入所有 46 列。
server = 'server'
database = 'db'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database)
cursor = cnxn.cursor()
for index, row in df.iterrows():
cursor.execute("INSERT INTO HumanResources.DepartmentTest (DepartmentID,Name,GroupName) values(?,?,?)", row.DepartmentID, row.Name, row.GroupName)
cnxn.commit()
cursor.close()
有没有一种方法可以插入整行而不给出列名? 像这样?
insert into table1
select * from df
我尝试了以下命令,但失败了,
for index, row in df.iterrows():
cursor.execute("INSERT INTO dbo.Staging select row"
)
Error:('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'row'. (207) (SQLExecDirectW); [42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Column name or number of supplied values does not match table definition. (213)")
我无法使用 to_sql,因为我无法在 UAT 或 prod 中导入 sqlalchemy。 谁能帮我解决这个问题?
【问题讨论】: