使用Python将数据插入SQL Server(3.7.4)

2024-09-27 23:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python脚本将数据插入到microsoftsqlserver中的表中。在

最初我试图上传一个excel文件,但收到了错误消息,并试图缩小任务的规模。此时,我正试图将一些数据推送到数据库中已经存在的表中。在这个例子中,我的servername是servername,database是DATABASENAME,我的表是table。脚本是:

import pyodbc 
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=SERVERNAME;'
                      'Database=DATABASENAME;'
                      'Trusted_Connection=yes;')

cursor = conn.cursor()
cursor.execute('INSERT INTO DATABASENAME.dbo.TABLE(Name, Age, City)
VALUES ('Alan', '30', 'London');

for row in cursor:
    print(row)

我收到以下错误消息:

^{pr2}$

我想在我的数据库中看到一行数据。我做错什么了?在


Tags: 文件数据脚本数据库消息server错误conn
2条回答

如果要在单引号字符串中使用单引号,则需要通过在引号前添加\或使用双引号字符串来对其进行转义。在

示例:

import pyodbc 
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=SERVERNAME;'
                      'Database=DATABASENAME;'
                      'Trusted_Connection=yes;')

cursor = conn.cursor()
cursor.execute("INSERT INTO DATABASENAME.dbo.TABLE(Name, Age, City) VALUES ('Alan', '30', 'London')")

如果要将更改保存到数据库中,还需要在连接上调用^{},或者将autocommit设置为True

^{pr2}$

如果要检索结果行,需要先选择它,例如:

cursor.execute("SELECT * FROM DATABASENAME.dbo.TABLE")
for row in cursor:
    print(row)

或者在您的INSERT语句中使用^{}

cursor.execute("""
  INSERT INTO DATABASENAME.dbo.TABLE(Name, Age, City)
  OUTPUT Inserted.Name, Inserted.Age, Inserted.City
  VALUES ('Alan', '30', 'London')
""")

for row in cursor:
    print(row)

代码片段的完整示例:

import pyodbc 
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=SERVERNAME;'
                      'Database=DATABASENAME;'
                      'Trusted_Connection=yes;')

cursor = conn.cursor()
cursor.execute("""
  INSERT INTO DATABASENAME.dbo.TABLE(Name, Age, City)
  OUTPUT Inserted.Name, Inserted.Age, Inserted.City
  VALUES ('Alan', '30', 'London')
""")
for row in cursor:
    print(row)

conn.commit()

代码段中的颜色应该已经向您显示了问题:您使用一个单引号开始字符串,而通过使用另一个单引号结束字符串之间的某个位置。在

一个简单的方法是转义该qoute(通过在前面添加一个\);还有一个更好的方法可以帮助保护代码不受SQL注入的影响,那就是使用准备好的语句

相关问题 更多 >

    热门问题