sqlite附加数据库

2022-03-17 00:00:00 数据 数据库 操作 分离 附加
当使用sqlite连接一个数据库之后,如果再想查询别的数据库之中的数据,那又该怎么办呢?脑洞大的朋友可能会直接把该数据库关闭,然后再打开新的数据库,这样确实可行,但是,如果查完新的数据又想查询原来的数据,岂不是又要关闭新的数据库,然后再打开原来的数据库,这样会不会显得自己很傻很纯很天真,其实数据库之间的操作还是很多很复杂的,这点小事使用数据库的附加操作就可以实现,所以没有那么麻烦。
附加数据库可以理解为将数据库连接在一起,形成新的数据库,在这个新的数据库之中就可以查询数据了,数据库的附加和分离操作如下:
附加数据库
ATTACH DATABASE file_name AS database_name
分离数据库
DETACH DATABASE database_name
实例如下:
"""附加与分离数据库
附加数据库
ATTACH DATABASE file_name AS database_name

分离数据库
DETACH DATABASE database_name

the statistics of this file:
lines(count) understand_level(h/m/l) classes(count) functions(count) fields(count)
000000000066 ----------------------l 00000000000000 0000000000000001 ~~~~~~~~~~~~~
"""


import time
import sqlite3

__author__ = '与C同行'


def print_pretty_outcome(cursor):
print('-' * 80)
all_outcome = cursor.fetchall()
for column_desc in cursor.description:
print(f'{column_desc[0]:<20}', end='')
print()
for item in all_outcome:
for cell in item:
try:
print(f'{cell:<20}', end='')
except TypeError:
cell = 'None'
print(f'{cell:<20}', end='')
print()
print('-' * 80)
print()


if __name__ == '__main__':
print(f'当前时间:{time.ctime()}')
print()

print('创建一个附加的数据库')
conn = sqlite3.connect('attach.db')
c = conn.cursor()
print('创建一个临时表格')
c.execute('''create table temp1_tb(
first_col text,
second_col text)'''
)
c.executemany('insert into temp1_tb values (?, ?)',
(('aa', 'bb'),
('cc', 'dd')))
conn.commit()
c.close()
conn.close()
print()

conn = sqlite3.connect('learn.db')
c = conn.cursor()
print('附加attach数据库')
c.execute('attach database "attach.db" as "attach_db"')
print('查询附加数据库中的数据')
c.execute('select * from temp1_tb')
print_pretty_outcome(c)
print('分离数据库')
c.execute('detach database attach_db')
c.close()
conn.close()

结果如下:

附加数据库就是把两个数据库连接在一起,所以这样的操作是数据库之间的操作,以前的操作都是数据库之内的操作,这就是他们之间大的不同。

来源 https://mp.weixin.qq.com/s/_STUkr45yyCVMm8RYSpBEQ

相关文章