Python sqlite3:如何检查连接是否是内存数据库?
Python sqlite3: how to check if connection is an in-memory database?
从 Python 的 sqlite3 库中,我们如何确定连接是否属于内存数据库?
import sqlite3
conn = sqlite3.connect(':memory:')
def is_in_memory_connection(conn):
# How to check if `conn` is an in-memory connection?
是否可以检查磁盘数据库的文件名?如果是这样,我认为它会 return None
用于内存数据库。
这是我能想到的最接近的:
import sqlite3
def is_in_memory_connection(conn):
local_cursor = conn.cursor()
local_cursor.execute('pragma database_list')
rows = local_cursor.fetchall()
print(rows[0][2])
return rows[0][2] == ''
#database = 'test.sqlite'
database = ':memory:'
conn = sqlite3.connect(database)
result = is_in_memory_connection(conn)
print(result)
如果您有一个 in-memory 数据库,database_list 将显示与此等效的内容:
sqlite> pragma database_list;
seq name file
--- ---- ----
0 main
如果您打开的是磁盘上的文件,它将显示与此等效的文件路径:
sqlite> pragma database_list;
seq name file
--- ---- --------------------------
0 main /home/testing/test.sqlite
利用这一点,您可以调用 pragma database_list
来显示文件。如果路径为空,则数据库未关联文件。
从 Python 的 sqlite3 库中,我们如何确定连接是否属于内存数据库?
import sqlite3
conn = sqlite3.connect(':memory:')
def is_in_memory_connection(conn):
# How to check if `conn` is an in-memory connection?
是否可以检查磁盘数据库的文件名?如果是这样,我认为它会 return None
用于内存数据库。
这是我能想到的最接近的:
import sqlite3
def is_in_memory_connection(conn):
local_cursor = conn.cursor()
local_cursor.execute('pragma database_list')
rows = local_cursor.fetchall()
print(rows[0][2])
return rows[0][2] == ''
#database = 'test.sqlite'
database = ':memory:'
conn = sqlite3.connect(database)
result = is_in_memory_connection(conn)
print(result)
如果您有一个 in-memory 数据库,database_list 将显示与此等效的内容:
sqlite> pragma database_list;
seq name file
--- ---- ----
0 main
如果您打开的是磁盘上的文件,它将显示与此等效的文件路径:
sqlite> pragma database_list;
seq name file
--- ---- --------------------------
0 main /home/testing/test.sqlite
利用这一点,您可以调用 pragma database_list
来显示文件。如果路径为空,则数据库未关联文件。