python - 如何使用python在sql中用空格插入列名中的值
问题描述
SQL数据库就像
ID | 名称 | 名称 | 全名 |
---|---|---|---|
1 | 乔恩 | 贝拉 | 乔恩贝拉 |
2 | 塞纳 | 大比 | 大比 |
我创建了一个名为 Info 的存储过程,我想通过 python 将更多数据插入到该表中。我在 csv 文件中读取了一个名为“df”的数据框。我想将 csv 文件值插入 SQL 数据库。
蟒蛇代码
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 =' +databse+';\
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()
运行此代码后,我收到错误“无效语法”全名。如何使用空格访问列名
解决方案
但是,不确定答案是否仍然相关,因为之前的答案不正确,下面的解决方案可能对面临此问题的其他人有所帮助。
假设列名不包含在文件中,将数据从 csv 文件插入 sql:
import csv
import pyodbc
server = "myservername"
database = "mydatabasename"
con = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL server};\
SERVER =' +server+';\
DATABASE =' +databse+';\
Trusted_Connection=yes;')
with open ('file path', 'r') as f:
reader = csv.reader(f)
data = next(reader)
query = 'INSERT INTO database values ({0})'
query = query.format(','.join('?' * len(data)))
cursor = conn.cursor()
for data in reader:
cursor.execute(query, data)
cursor.commit()
推荐阅读
- linux - 查找和复制命令在 bash 中不起作用
- python - Python:dropbox API 中的sharing_get_shared_link_file() 示例
- google-sheets - 如何使用 v 查找以降序显示另一个工作表中的值
- c# - DbCommand.Cancel 方法是否使用超时?
- material-ui - 如何重用 Material UI 样式
- nginx - 在 Nginx Web 服务器下的 GRPC 调用中出现 504 超时错误
- reactjs - 如何使用 getServerSideProps 将用户重定向到另一个页面?
- azure - Azure AD 加入默认本地管理员
- java - 避免创建 HandlerThread 和上下文泄漏
- deep-learning - 没有交叉验证的 GridSearchCV CV = 1