当前位置:首页>python>Python开发从零开始-49.21-数据库操作

Python开发从零开始-49.21-数据库操作

  • 2026-10-11 05:47:22
Python开发从零开始-49.21-数据库操作

接上文Python开发从零开始-49.20-数据库操作,本文小编与大家分享 Python 数据库操作的相关知识。

(34)附加数据库

SQLite 命令行中,一次数据库连接只能访问一个数据库,如果要操作其他数据库就必须切换数据库连接,否则将报错。这对于需要整合来自多个数据源的数据的场景非常不便。

例如:当前路径下有 test.db 和 db1.db 两个数据库

连接 db1.db 后 ,如果在当前连接中访问 test.db 数据库就会报错。

SQLite 提供了 “附加数据库” 功能来解决这个问题。 “附加数据库”(ATTACH DATABASE)不是将一个或多个数据库 “附加” 到另一个已存在的数据库,而是将一个或多个数据库文件附加到当前的数据库连接上。这样就可以在同一个连接中查询多个数据库文件中的数据,注意附加数据库仅在当前连接有效。

可以使用 ATTACH DATABASE 语句来附加数据库,其基本语法为:

ATTACH DATABASE 'file_name' 

AS 'alias_name';

语法解释:

  • file_name:附加数据库文件名,如果该数据库不存在则创建;

  • alias_name:附加数据库的逻辑数据库名,将 file_name 与 alias_name 绑定。

注意:

  • file_name、alias_name 均应使用单引号 ' ';

  • 附加数据库仅在当前连接有效;

  • 当前连接的数据库和附加数据库文件必须在同一目录下。

例如:使用 ATTACH DATABASE 语句来将 test.db 附加到 db1.db 中,操作步骤为:

1)使用 .open db1.db 命令打开 db1.db 数据库;

2)使用 .databases 命令查看当前数据库列表,当前仅 db1.db 数据库;

3)使用下面语句将 test.db 附加到当前连接,逻辑数据库名 testDB;

ATTACH DATABASE 'test.db' AS 'testDB'

4)使用 .databases 命令查看当前数据库列表,当前有 db1.db 和 testDB 两个数据库;

 5)使用下面语句查询 test.db 数据库 中的 COMPANY 表。

SELECT * FROM testDB.COMPANY;

SQLite 命令提示符中完整操作如下所示:

附加数据库的注意事项:

  • 事务处理‌:附加一个数据库时,所有在该事务开始后附加的数据库都会被包含在当前事务中。如果事务失败,这些附加的数据库也会被回滚。

  • ‌权限和安全性‌:确保附加的数据库是安全的,尤其是当它们来自不可信的源时。SQLite在处理文件路径时相对宽松,因此要小心处理路径注入等问题。

(35)分离数据库

分离数据库(DETACH DATABASE)是附加数据库的逆向操作,用于将附加的数据库分离出当前连接。

可以使用  DETACH DATABASE 语句分离数据库,其基本语法如下:

DETACH DATABASE 'alias_name';

语法解释:

alias_name:附加数据库的逻辑数据库名。

删除前文附加的数据库 testDB 使用如下语句

DETACH DATABASE 'testDB'

SQLite 命令提示符中完整操作如下所示:

分离数据库的注意事项:

  • 确保在分离数据库之前完成所有需要的操作,因为一旦数据库被分离,将无法再访问它,除非再次附加;

  • 附加的数据库可以是只读的或可写的,这取决于是如何打开原始数据库,例如,使用 SQLite 命令行工具时,可以指定只读模式;

  • 附加和分离数据库时要小心管理内存和资源,特别是在处理大型或复杂的数据集时。频繁地附加和分离数据库可能会影响性能。

(36)数据迁移

SQLite 数据迁移是指将 SQLite 数据库的‌结构(Schema)和数据‌从一种状态转移到另一种状态的过程。

1)简单迁移

可以直接复制 SQLite 数据库文件来实现数据迁移。

2)将 SQLite 数据库结构和数据导出到文本文件

在命令提示符下,使用 sqlite3 命令结合 .dump 命令可以将 SQLite 数据库结构和数据导出到文本文件(通常为 .sql 文件)。注意 SQLite 默认使用 UTF-8 字符集,导出的文本文件需要确定字符集是否符合。其基本语法如下:

sqlite3 database_file_name .dump> text_file_name

将 test.db 数据库结构和数据导出到 testDB.sql 文件中,使用以下语句:

sqlite3 test.db .dump > testDB.sql

命令提示符(使用 CMD 而不是 PowerShell)操作如下所示:

导出的 testDB.sql 文件使用记事本打开如下所示:

3)将数据库结构和数据文本文件导入数据库

在命令提示符下,使用以下语法将数据库结构和数据文本文件导入数据库

sqlite3 database_file_name < text_file_name

将 testDB.sql 数据库结构和数据导入到 testDB.db 数据库中,使用以下语句:

sqlite3 testDB.db < testDB.sql

命令提示符(使用 CMD 而不是 PowerShell)操作如下所示:

受文章篇幅所限,下文将继续介绍 Python 数据库操作的相关知识。

最新文章

随机文章