gpt4 book ai didi

python - 两个进程能否访问内存中(:memory:) sqlite database concurrently?

转载 作者:IT王子 更新时间:2023-10-29 06:18:39 29 4
gpt4 key购买 nike

是否可以在一个进程中访问在另一个进程中创建的数据库?我试过了:

空闲 #1

import sqlite3
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute("create table test(testcolumn)")
c.execute("insert into test values('helloooo')")
conn.commit()
conn.close()

空闲 #2

import sqlite3
conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute("select * from test")

错误:

Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
q = c.execute("select * from test")
sqlite3.OperationalError: no such table: test

最佳答案

不,他们永远不能从不同的进程访问同一个内存数据库相反,到 :memory: 的新连接 总是 创建一个 数据库。

来自SQLite documentation :

Every :memory: database is distinct from every other. So, opening two database connections each with the filename ":memory:" will create two independent in-memory databases.

这与磁盘上的数据库不同,后者使用相同的连接字符串创建多个连接意味着您正在连接到一个数据库。

一个进程 中,如果您使用 file::memory:?cache=shared URI,则可以共享内存中的数据库:

conn = sqlite3.connect('file::memory:?cache=shared', uri=True)

但这仍然无法从其他进程访问。

关于python - 两个进程能否访问内存中(:memory:) sqlite database concurrently?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15720700/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com