1
monetto OP 代码缩进没有了 ...
总结就是两个线程循环执行, 一个线程执行 connection.cursor().execute("INSERT INTO test_table (name) VALUES ('%s')" % random.random()) 一个线程去读 然后程序必定崩溃 ... |
2
monetto OP 求熟悉 SQLite 的大佬帮忙看看 ...
|
3
tulongtou 2022-09-20 20:28:02 +08:00 1
不贴错误日志,让谁给你看啊
|
5
ysc3839 2022-09-20 20:38:27 +08:00 via Android 1
又遇到字符串拼接 SQL 语句:connection.cursor().execute("INSERT INTO test_table (name) VALUES ('%s')" % random.random())
有 SQL 注入的风险 明明.execute()就有占位符功能的,为何不用呢? https://docs.python.org/3/library/sqlite3.html#sqlite3-placeholders |
7
ruanimal 2022-09-20 20:55:41 +08:00 1
似乎 connection 非 threadsafe
|
8
kokutou 2022-09-20 21:02:23 +08:00
你开个命令行运行呗。。。
|
9
wxf666 2022-09-20 21:03:00 +08:00
我这里测试没崩啊
Windows 10 Python 3.10 PyCharm 2021 另外,根据[文档]( https://sqlite.org/isolation.html )所说,你不应该在同一个连接内同时读写数据库,此行为未定义 最后,贴代码起码用下 Markdown 啊。回复用不了就算了,帖子还不用。。 |
10
monetto OP @ruanimal 但是 Google 了一圈,网上基本都是说 <多写> 是非 ThreadSafe ,我这个场景是 单读单写 按道理没问题呀 ...
|
12
monetto OP @kokutou 命令行也提示 [1] 20588 segmentation fault python test/concurrent_sqlite_test.py
|
14
monetto OP @wxf666 但是大佬,我本机测试稳定崩溃 ... 会有三种情况出现。
第一种 直接 Disk IO Error ,google 一圈没找到方案 ... 第二种 Database Block ,这个我测试 多写并发的时候发生过,但是按理说 一读一写 也会 Block 吗 。。。 第三种 进程直接关闭了 segmentation fault |
15
monetto OP |
16
wxf666 2022-09-20 22:25:06 +08:00 1
|