微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 两个进程可以同时访问内存(:memory :) sqlite数据库吗?

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

空闲#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()

IDLE#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.

这与磁盘数据库不同,在磁盘数据库中,使用相同的连接字符串创建多个连接意味着您将连接到一个数据库.

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

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

但这仍然无法通过其他流程访问.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐