2010-11-26 92 views
2

我正在使用pymssql在Linux上使用Python进行数据库编程。pymssql问题 - INSERT不能用于参数

我遇到了传递参数给查询的问题。这个问题似乎只存在于INSERT查询中。

这工作:

query = "SELECT col1, col2 FROM table WHERE col3=%s" 
cur.execute(query, (value,)) 

但这并不:

query = "INSERT INTO table (col1, col2) VALUES (%s, %s)" 
cur.execute(query, (value1, value2,)) 

任何想法,为什么插入查询将无法正常工作?

这里是回溯:

Traceback (most recent call last): 
    File "test.py", line 46, in ? 
    cur.execute(query, (value1, value2,)) 
    File "/usr/lib/python2.4/site-packages/pymssql.py", line 126, in execute 
    self.executemany(operation, (params,)) 
    File "/usr/lib/python2.4/site-packages/pymssql.py", line 152, in executemany 
    raise DatabaseError, "internal error: %s" % self.__source.errmsg() 
pymssql.DatabaseError: internal error: None 
+0

同样的例子适用于Fedora 13附带的MySQL-python 1.2.3。 – MarkR 2010-11-26 12:08:34

+2

它确实在MySQL中有效,但我使用的是MSSQL。 :( – infrared 2010-11-26 12:31:12

回答

1

原来我试图插入是类型统一的价值观之一。当我将它转换为字符串时,使用str(value1),查询工作。

-1

如何:

cur.execute(query % (value1, value2))