python核心编程学习笔记-2016-09-17-02-数据库编程(二)

        21.2 Python数据库应用程序 程序员接口(DB-API)

        DB-API是一个规范。它定义了一系列必需的对象和数据库存取方式,以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。

        21.2.1 模块属性

        一个DB-API兼容的模块必须定义如下所示的所有全局属性。

属性名 描述
apilevel 模块兼容的DB-API版本号
threadsafety 线程安全级别
paramstyle 该模块支持的SQL语句参数风格
connect() 连接参数
(异常) --

          1. 数据属性
          (1) apilevel 
          这是一个字符串,表示这个DB-API模块所兼容的DB-API最高版本号,如'1.0'或'2.0'等,默认是'1.0'。
>>> import MySQLdb
>>> MySQLdb.apilevel
'2.0'
          (2) Threadsafety
          这是一个整型。取值如下:
  • 0:不支持线程安全,多个线程不能共享此模块
  • 1:初级线程安全支持:线程可以共享模块,但不能共享连接
  • 2:中级线程安全支持:线程可以共享模块和连接,但不能共享游标
  • 3:完全线程安全支持:线程可以共享模块、连接和游标
>>> MySQLdb.threadsafety
1
          (3) Paramstyle
          这同样也是一个字符串,表明SQL语句中字符串替代的方式。
参数风格 描述 示例
numeric(数字) 数字位置风格 WHERE name=:1
named(命名) 命名参数风格 WHERE name=:name
pyformat 字典格式转换 WHERE name=%(name)s
qmark(问号) 问号风格 WHERE name=?
format 标准ANSI C格式转换 WHERE name=%s

>>> MySQLdb.paramstyle
'format'
          2. 函数属性
          connect()方法生成一个连接对象。这个方法有五个参数:user、password、host、database和dsn。
          e.g. connect(dsn='my', host='MYDB', user='guido', password='2349')
参数 描述
user Username
password Password
host Hostname
database Database name
dsn Data source name
           数据库连接可以以一个DSN字符串的形式提供,也可以以多个位置相关参数的形式提供。
  • MySQLdb.connect(host='dbserv', db='inv', user='smith')
  • PgSQL.connect(database='sales')
  • psycopg.connect(database='templates1', user='pgsql')
  • gadfly.dbapi20.connect('csrDB', '/usr/local/database')
  • sqlite3.connect('marketing/test')     
         3. 异常
         兼容标准的模块也应该提供这些异常类。
异常 描述
Warning 警告异常基类
Error 错误异常基类
InterfaceError 数据库接口错误
DatabaseError 数据库错误
DataError 处理数据时出错
OperationalError 数据库执行命令时出错
IntegerityError 数据完整性错误
InternalError 数据库内部出错
ProgrammingError SQL执行失败
NotSupportedError 试图执行数据库不支持的特性



你可能感兴趣的:(python核心编程)