我正在尝试使用python脚本创建,编辑和读取sqlite文件。我的代码是服务器客户端模型,客户端在从服务器接收命令时写入数据库。
来自服务器的每个命令都在一个单独的线程上接收,以提供并行操作。
除非系统重新启动,否则客户端永远不会重新启动,但是在用户需要时启动服务器程序。
现在我的问题出现了,因为python的sqlite不是线程安全的。所以我有一个消费者队列到数据库进行所有写操作。
我无法提供代码,因为它非常长,并且很难解耦并提供完整的工作副本。
但是错误的代码片段是:
#first line of the snippet code pasted above
db = sqlite3.connect(self.sql_report)
我收到的错误是
{{1}}
第81行:这是:
{{1}}
我不知道为什么会出现这个错误。需要注意的一点是,只有在服务器运行几次后才会出现此错误。
答案 0 :(得分:0)
错误正是它所说的。您正在传递self.sql_report
作为要使用的字符串数据库文件名,但在进行调用时它不是字符串。
你需要找出它的真正含义,这是标准的Python调试。使用你通常使用的任何东西。这里还有一个建议,它将打印它的内容并放入交互式调试器中,以便您可以进一步检查。
try:
db = sqlite3.connect(self.sql_report)
except ValueError:
print (repr(self.sql_report))
import pdb; pdb.set_trace()
raise