2014-02-24 32 views
5

我似乎无法弄清楚什么是错我的代码,但我不断收到:错误绑定参数0:可能不支持的类型

error "binding parameter 0 - probably unsupported type". 

这里是我的代码:

last = 'EBERT' 

sakila = connect("sakila.db") 
res = sakila.execute("SELECT first_name, last_name FROM customer WHERE last_name = ?",[(last,)]) 

for row in res: 
    print(row) 

当我有它'EBERT'在查询中,并没有设置为一个变量,它工作正常,所以我知道这是一个元组语法或什么的问题。我已经尝试过没有括号,第二个变量为first_name,有和没有单独定义的游标,基本上我可以想到的每种方法,并且我已经研究了几个小时,但没有得到任何帮助,所以任何帮助将是超级赞赏。

+1

的线条和缩进在我的代码顺便说一句,它只是在帖子里搞砸了。 – user3345626

+0

另外我不能得到fetchall的东西工作。我有res.fetchall()但它只给了我一个空的列表,我不知道为什么 – user3345626

回答

2

嵌套列表,元组用于executemany,而不是execute

传递contians参数的平面列表(或元组)。

res = sakila.execute(
    "SELECT first_name, last_name FROM customer WHERE last_name = ?", 
    (last,)) 

res = sakila.execute(
    "SELECT first_name, last_name FROM customer WHERE last_name = ?", 
    [last]) 
+0

谢谢!这很好。你知道如何工作fetchall(),这样res.fetchall()不会创建一个空列表吗? – user3345626

+0

@ user3345626,欢迎来到Stack Overflow!如果这对你有帮助,你可以通过接受答案告诉社区(http://meta.stackexchange.com/a/5235)。 – falsetru

+0

@ user3345626,你在迭代'res'后调用了'fetchall'吗?一旦它被迭代,它就会被剔除。您需要再次执行查询。只需删除'for'循环就能解决你的问题。 – falsetru

1

我得到了同样的错误,整理出我的数据类型是不匹配的。然后我将它转换成字符串;

cursor.execute('''INSERT INTO employees VALUES (?);''', (str(data[0]),)) 

它工作得很好。希望这会对某人有所帮助。

0

解析度= sakila.execute( '' 'SELECT名字,姓氏从客户WHERE姓氏= {0}' ''。格式(最后))

这个工作对我来说

相关问题