使用python将数据插入MSSQL服务器

时间:2015-06-02 07:08:28

标签: python sql-server

我正在尝试使用以下代码将数据插入到sql server表中,

import pyodbc
user='sa'
password='PC#1234'
database='climate'
port='1433'
TDS_Version='8.0'
server='192.168.1.103'
driver='FreeTDS'

   con_string='UID=%s;PWD=%s;DATABASE=%s;PORT=%s;TDS=%s;SERVER=%s;driver=%s' % (user,password, database,port,TDS_Version,server,driver)
   cnxn=pyodbc.connect(con_string)
   cursor=cnxn.cursor()
   cursor.execute("INSERT INTO mytable(name,address) VALUES (%s,%s)",('thavasi','mumbai'))
   cnxn.commit()

执行时会给我以下错误,

   Traceback (most recent call last):
  File "sql.py", line 26, in <module>
  cursor.execute("INSERT INTO mytable(name,address) VALUES (%s,%s)",('thavasi','mumbai'))
 pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 2 parameters were supplied', 'HY000')

我已经检查了insert语句的语法是否正确。是什么导致了这个错误?

7 个答案:

答案 0 :(得分:4)

cursor.execute("INSERT INTO mytable(name,address) VALUES (?,?)",('thavasi','mumbai'))

在pyodbc模块中使用而不是

答案 1 :(得分:2)

这对我有用。

cursor.execute("INSERT INTO tablename(field1,field2) VALUES(?,?) ", (data1,data2))

答案 2 :(得分:1)

这可用于SQL Server 2012及更高版本以及集成的安全性

import pyodbc 
conn = pyodbc.connect('Driver={SQL Server Native Client 11.0};'
                  r'Server=YourServer\YourInstance;'
                  'Database=YourDatabase;'
                  'Trusted_Connection=yes;') #integrated security

cursor = conn.cursor()

SQLCommand = ("INSERT INTO PY.PackageTables (PackageName,PackageTables) VALUES (?,?);") 
Values = ['Test1','Test3']

#Processing Query    
cursor.execute(SQLCommand,Values)

conn.commit()
print("Data Successfully Inserted")   
conn.close()

答案 3 :(得分:0)

您忘记%符号,%s必须在引号中

试试这个:

cursor.execute('INSERT INTO mytable(name,address)VALUES(“%s”,“%s”)',%('thavasi','mumbai'))

答案 4 :(得分:0)

尝试一下:

a1 = row[0]
a2 = row[1]
valores = (a1, a2)

cursor2.execute('INSERT INTO [CENTRAL_ALARM].[dbo].[EEE](E3TimeStamp, CaptacaoSemAgua) VALUES (?,?)', valores)

答案 5 :(得分:-1)

这里完成的

string格式化是错误的。试试这个

cursor.execute("INSERT INTO mytable(name,address) VALUES (%s,%s)" %('thavasi','mumbai'))

查看http://www.diveintopython.net/native_data_types/formatting_strings.html

答案 6 :(得分:-1)

如果在字符串中使用占位符,则需要使用%运算符,而使用带有的参数列表,。所以你的电话应该是这样的:

   cursor.execute("INSERT INTO mytable(name,address) VALUES (%s,%s)" %('thavasi','mumbai'))