PyCharm中无法查看SQLite内存数据库表的问题求助
问题原因及解决办法
核心原因
- 内存数据库的进程隔离特性:SQLite的
:memory:内存数据库完全存在于当前Python进程的内存空间里,PyCharm的数据库工具是独立进程,二者内存不共享,所以它根本访问不到你代码里创建的那个内存数据库实例,自然看不到自定义表。 - 连接实例不匹配:你在PyCharm里配置的数据库连接,其实是新建了一个独立的内存数据库实例,和代码里的不是同一个,这个新实例里只有默认的
sqlite_master表,没有你创建的内容。
解决办法
方法1:改用磁盘文件数据库(推荐)
把代码里的SQLite连接字符串从内存模式改成指向磁盘文件的路径,比如:
# 原生sqlite3用法 conn = sqlite3.connect('my_quotes.db') # SQLAlchemy用法 engine = create_engine('sqlite:///./my_quotes.db')
数据库会被持久化到磁盘文件中,PyCharm连接这个文件后,就能看到所有你创建的表和数据,而且进程结束后数据不会丢失。
方法2:临时共享内存数据库(仅调试用)
如果一定要用内存数据库,需要开启SQLite的共享缓存模式,让不同进程能访问同一个内存实例:
- 代码里修改连接参数:
# 原生sqlite3用法 conn = sqlite3.connect(':memory:', check_same_thread=False, uri=True) conn.execute('PRAGMA cache=shared;') # SQLAlchemy用法 engine = create_engine('sqlite:///:memory:?cache=shared', connect_args={'check_same_thread': False})
- 在PyCharm的数据库工具里,用同样的连接字符串(
sqlite:///:memory:?cache=shared)创建新的SQLite连接。注意必须在Python进程运行期间操作,一旦代码停止,内存数据库就会被销毁,PyCharm里的连接也会看不到数据。
内容的提问来源于stack exchange,提问作者Amogh Sarpotdar
相关产品推荐
相关产品推荐

