使用 sqlite3/pysqlite 跨数据库连接
joining across databases with sqlite3 / pysqlite
我有两个单独的数据库文件,每个数据库文件都有 tables,主键匹配,但数据不同。我想根据另一个 table 中的值从一个 table 中提取行。在 sqlite3
的 CLI 中,我会这样做:
.open data.db
.open details.db
attach 'data.db' as data;
attach 'details.db' as details;
select details.A.colA from data.A join details.A using ('key') where data.A.colB = 0 and data.A.colC = 1;
如何使用 pysqlite
重新创建这样的跨数据库连接?
您可以使用 ATTACH DATABASE
附加其他数据库:
conn = sqlite3.connect('data.db')
conn.execute('ATTACH DATABASE details.db AS details')
出于查询目的,第一个数据库称为 main
:
cursor = conn.cursor()
cursor.execute('''
select details.A.colA
from main.A
join details.A using ('key')
where main.A.colB = 0 and main.A.colC = 1
''')
我有两个单独的数据库文件,每个数据库文件都有 tables,主键匹配,但数据不同。我想根据另一个 table 中的值从一个 table 中提取行。在 sqlite3
的 CLI 中,我会这样做:
.open data.db
.open details.db
attach 'data.db' as data;
attach 'details.db' as details;
select details.A.colA from data.A join details.A using ('key') where data.A.colB = 0 and data.A.colC = 1;
如何使用 pysqlite
重新创建这样的跨数据库连接?
您可以使用 ATTACH DATABASE
附加其他数据库:
conn = sqlite3.connect('data.db')
conn.execute('ATTACH DATABASE details.db AS details')
出于查询目的,第一个数据库称为 main
:
cursor = conn.cursor()
cursor.execute('''
select details.A.colA
from main.A
join details.A using ('key')
where main.A.colB = 0 and main.A.colC = 1
''')