Python DB API
Posted yvivid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python DB API相关的知识,希望对你有一定的参考价值。
Python DB-API 2.0规范 请参考 python PEP-0249.
https://www.python.org/dev/peps/pep-0249/
1、Python DB API包含:
数据库连接对象:connection
数据库交互对象:cursor
数据库异常类:exceptions
2、开发数据库程序流程:
1)创建connection对象,获取cursor
2)使用cursor执行SQL
3)使用cursor获取数据、判断执行状态
4)提交事务 或者 回滚事务
使用Python DB AP访问数据库流程:
开始------->创建数据库连接connection------>获取cursor------>处理数据(增删查改)------->关闭cursor------>关闭connection------>结束
3、模块接口(Module Interface):
数据库的访问是通过连接对象(connection objects)来实现的。程序模块中必须提供以下形式的连接对象构造函数:
connect(parameters...)
数据库连接对象的构造函数,返回值为Connection对象实例。 由于目的数据库不同,函数接收数量不等的一些参数。
模块中必须定义下面这些模块级的变量:
apilevel:字符串常量,表明支持的DB API版本。
目前只允许取值\'1.0\'和\'2.0\'。如果没有定义本常量,默认为DB-API 1.0。
threadsafety:整数常量,表明模块支持的线程安全级别,可能的值为:
0 线程不安全,线程不能共享模块。
1 线程可以共享模块,但是不能共享连接对象(connections)。
2 线程可以共享模块和连接对象。
3 线程安全,线程间可以共享模块、连接对象以及游标对象(module,connections,cursors)。
上文中共享的意思是两个线程在没有使用互斥信号(mutex semaphore)锁的情况下, 同时使用一个资源。
要注意的是,你并不总能使用互斥信号来确保一个外部资源线程安全,这是因为外部资源很有可能依赖于一
个全局变量或是其他的外部资源,然而这些是你不能控制的。
paramstyle:字符串常量声明模块使用的SQL语句中的参数引出方式。可能的取值如下[2]:
\'qmark\' 问号方式,例如:\'...WHERE name=?\'
\'numeric\' 序数方式,例如:\'...WHERE name=:1\'
\'named\' 命名方式,例如:\'...WHERE name=:name\'
\'format\' 通用方式(ANSI C printf format codes)例如:\'...WHERE name=%s\'
\'pyformat\' python扩展方式(Python extended format codes),例如:\'...WHERE name=%(name)s\'
模块中应该按照下面所阐述的错误类别和层次关系来处理各种错误信息:
错误类的层次关系:
StandardError
|__Warning
|__Error
|__InterfaceError
|__DatabaseError
|__DataError
|__OperationalError
|__IntegrityError
|__InternalError
|__ProgrammingError
|__NotSupportedError
注:这些例外(Exceptions)的值(错误信息)并没有明确的定义,但是它们应该能够给用户指出足够好的错误提示。
【参考文献】
PEP-0249 简单的中文翻译:https://blog.csdn.net/dajianshi/article/details/7482201
【引用请声明出处,yvivid】https://www.cnblogs.com/yvivid/p/python_DB-API.html
以上是关于Python DB API的主要内容,如果未能解决你的问题,请参考以下文章
Python操作MySQL数据库—pymysql库(可直接使用的模板通用操作)
Python操作MySQL数据库—pymysql库(可直接使用的模板通用操作)
Python操作MySQL数据库—pymysql库(可直接使用的模板通用操作)
Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段