TypeError:在翻译时期望一个字符缓冲区对象

时间:2013-12-22 17:53:45

标签: python sqlite python-2.7 dictionary

我正在开发一个使用sqlite3数据库来存储一些数据的项目。

我的搜索功能使用SQL语句:'''SELECT text FROM snippets WHERE title=?''', (whichName,),而我的代码是,whichName作为字典进入,它收到了这个错误:

Traceback (most recent call last):
  File "snippets.py", line 93, in <module>
    main()
  File "snippets.py", line 24, in main
    get_value_from_name(response)
  File "snippets.py", line 58, in get_value_from_name
    (whichName,))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

因此,我认为我需要将其作为字符串传递,所以我只是将name = str(response)转换为字符串,但这是问题开始的地方。它给了我这个:

[u'TEST'] <--- What is returned by the conversion to a string
None      <--- What is returned by the search function

当我将字典转换为字符串时。搜索功能随后返回None,因为它已经传递[u'TEST']而不是TEST。所以,我添加了一些翻译代码:

    translation_table = dict.fromkeys(map(ord, '(),'), None)
    # Above code creates a table with the mapped characters

    name = str(response)

    name = name.translate(translation_table)

这是我目前的问题所在。它返回以下错误:

Traceback (most recent call last):
  File "snippets.py", line 93, in <module>
    main()
  File "snippets.py", line 20, in main
    name = name.translate(translation_table)
TypeError: expected a character buffer object

我看了这些问题:

但没有一个适用于我的问题(据我所见)。

有谁知道造成类型错误的原因是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我在Python 3.3.2+中运行了代码并且它可以找到(虽然对转换表进行了一些小的调整)

对不起,如果我浪费了任何人的时间。我会尽快将其标记为答案。