Python数据库编程

  在任何应用中,都需要持久化存储,一般有3种基础的存储机制:文件、数据库系统以及一些混合类型。这种混合类型包括现有系统上的API、ORM、文件管理器、电子表格、配置文件等。在了解数据库以及如何在Python中使用他们之前,首先需要知道数据库概念以及SQL语句。

底层存储

   数据库通常使用文件系统作为基本的持久化存储,它可以是普通的操作系统文件、专用的操作系统文件,甚至是原始的磁盘分区。

用户接口

   大多数数据库系统提供了命令行工具,可以使用其执行SQL语句或查询。此外还有一些GUI工具,使用命令行客户端或数据库客户端库,向用户提供便捷的界面。

数据库

  一个关系数据库管理系统(RDBMS)通常可以管理多个数据库,比如销售、市场、用户支持等,都可以在同一个服务端。

组件

  数据库存储可以抽象为一张表。每行数据都有一些字段对应于数据库的列。每一行的表定义的集合以及每个表的数据类型放到一起定义了数据库的模式(schema)。数据库可以创建(create)和删除(drop),表也一样。往数据库里添加新行叫做插入(insert),修改表中已存在的行叫做更新(update),而移除表中已存在的行叫做删除(delete)、这些动作通常称为数据库命令或操作。使用可选条件请求获取数据库中的行称为查询(query)。

SQL

   数据库命令和查询操作是通过SQL语句提交给数据库的。虽然并非所有数据库都是用SQL语句,但是大多数关系数据库使用。下面是一些SQL命令示例,大部分数据库不区分大小写,但是对数据库关键字使用大写字母是最为广泛接受的风格。大多数命令需要结尾的分号(;)来结束这条语句。

创建数据库

mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.00 sec)

使用数据库与删除数据库

mysql> USE test;
Database changed
mysql> DROP DATABASE test;
Query OK, 0 rows affected (0.00 sec)

创建表

mysql> CREATE TABLE users (login VARCHAR(8),userid INT,projid INT);
Query OK, 0 rows affected (0.02 sec)

插入行

mysql> INSERT INTO users VALUES('lena',211,1);
Query OK, 1 row affected (0.00 sec)

更新行

mysql> UPDATE users SET userid=311 WHERE projid=1;        
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

删除行

mysql> DELETE FROM users WHERE projid=1;
Query OK, 1 row affected (0.00 sec)

删除表并清空数据

mysql> DROP TABLE users;
Query OK, 0 rows affected (0.00 sec)

   在Python中数据库是通过适配器的方式进行访问。适配器是一个Python模块,使用它可以与关系型数据库的客户端接口相连。如图所示为编写Python数据库应用的结构,包括使用和没有使用ORM的情况。从图中可以看出DB-API是连接到数据库客户端的C语言的接口。

Python数据库编程

   DB-API是阐明一系列所需对象和数据库访问机制的标准,它可以为不同的数据库适配器和底层数据库提供一致性的访问。DB-API标准要求必须提供下表的功能和属性。

属性

描述

apilevel需要适配器兼容的DB-API版本threadsafety本模块的线程安全级别paramstyle本模块的SQL语句参数风格connect()Connect()函数(多种异常)
异常

数据属性

  apilevel,该字符串致命模块需要兼容的DB-API最高版本

  threadsafety,指明模块线程的安全级别

    0:不支持线程安全,线程间不能共享模块。

Python数据库编程