SQLITE多个文件

gstyhher  于 2023-02-05  发布在  SQLite
关注(0)|答案(3)|浏览(362)

很抱歉这个不专业的问题,但我有点新的sqlite,但我想知道是否有任何方法,我可以打开两个文件在同一个python命令db = sqlite3.connect('./cogs/database/users.sqlite')当我打开这个在我的命令,它不'我不允许在同一个命令中做同样的事情来打开另一个文件,例如打开db = sqlite3.connect('./cogs/database/users.sqlite')并从中读取一些内容,如果是这样,打开db = sqlite3.connect('./cogs/database/anotherfile.sqlite')并插入到其中,但它总是接受仅第一个文件并忽略第二个文件

j2qf4p5b

j2qf4p5b1#

分配db1使其连接到用户.sqlite,分配db2使其连接到另一个文件. sqlite。
然后你可以从一个中选择并插入到另一个中,用一个临时变量桥接这两个。

iyfjxgzm

iyfjxgzm2#

Sqlite数据库是基于单个文件的,因此no-sqlite3. connect构建一个到单个数据库文件的连接对象。
即使构建了两个连接对象,也不能跨它们执行查询。
如果你真的一次需要两个文件中的数据,你需要把这些数据合并成一个数据--或者不要使用sqlite。

unguejic

unguejic3#

可以跨两个SQLite文件执行查询,但需要对第一个连接游标执行ATTACH命令。

conn = sqlite3.connect("users.sqlite")
cur = conn.cursor()
cmd = "ATTACH DATABASE 'anotherfile.sqlite' AS otra"
try:
    cur.execute(cmd)

    query = """
       SELECT
           t1.Id, t1.Name, t2.Address
         FROM personnel t1
         LEFT JOIN otra.location t2
           ON t2.PersonId = t1.Id
         WHERE t1.Status = 'current'
         ORDER BY t1.Name;
            """
     cur.execute(query)
     rows = cur.fetchall()
 except sqlite3.Error as err:
     do_something_with(err)

相关问题