You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python操作SQL时如何向带空格的列名插入数据

报错由两处不符合语法规则的写法导致,另有一处拼写错误也会触发运行报错,修改方案如下:

具体修改点

  • SQL端:SQL Server中包含空格的列名需要用方括号[]包裹,避免识别为两个独立标识符,将语句中的Full Name改为[Full Name]
  • Python Pandas端:DataFrame行对象的带空格列不能使用.属性访问,必须用[]索引取值,将row.Full Name改为row['Full Name']
  • 拼写修正:数据库连接字符串中的databse拼写错误,修正为database

修正后的完整代码

import pyodbc
import pandas as pd

df = pd.read_csv("file path")
server = "myservername"
database = "mydatabasename"
con = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL server};\
       SERVER =' + server + ';\
       DATABASE =' + database + ';\
       Trusted_Connection=yes;')
cursor = con.cursor()
for index, row in df.iterrows():
    cursor.execute("INSERT INTO info (ID, Fname, Lname, [Full Name]) values(?,?,?,?)", 
                   row.ID, row.Fname, row.Lname, row['Full Name'])

con.commit()
# 操作完成后建议主动关闭连接释放资源
cursor.close()
con.close()

可选优化建议

如果插入的数据量较大,逐行插入效率较低,可以使用executemany批量插入,性能提升明显:

# 把需要插入的字段转为元组列表
params = [tuple(x) for x in df[['ID', 'Fname', 'Lname', 'Full Name']].values]
cursor.executemany("INSERT INTO info (ID, Fname, Lname, [Full Name]) values(?,?,?,?)", params)
con.commit()

内容的提问来源于stack exchange,提问作者akriti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 11:06:08