python 数据库接口_详解Python数据库API规范v2.0

如今,Python已经越来越流行。数据分析,爬虫,统计报表,机器学习等等应用场景中必然少不了Python的身影。显然,绝大部分和Python相关的应用场景也少不了”读写“数据库的操作。

不得不说,Python开源社区真的超级厉害,已出现很多优秀的Python与Mysql、DB2、Oracle、PG、Hive等各种数据库之间建立通信的pythonic package。例如,Pymysql, ibm_db, cx_Oracle, Pyhive, PsyCopg等等。

那这些python-database packages之间有何设计共通性呢?这篇文章简单地总结了一些最常用的功能。

1. connect构造函数:

用于创建一个与数据库连接的连接实例,例如。

self.connection = pymysql.connect(host=self.ip,

port=self.port,

user=self.username,

password=self.password,

db=self.db_name,

charset='utf8mb4',

cursorclass=pymysql.cursors.SSCursor)

2. 连接实例应该具有以下函数:close():关闭实例,若之后继续调用该连接实例,则会抛出异常。值得注意的是,若关闭连接实例之前没有执行commit操作,则将执行“隐式”rollback.

commit():将update、insert、delete等操作的执行结果提交至数据库。值得注意的是,有些数据库具有自动提交功能。

rollback():由于并非所有数据库都提供"transaction support",因此该方法是optional。值得注意的是,若数据库提供"transaction support",那么调用该方法将使数据库回滚到任何"pending transaction"的起始处。

cursor():返回一个新的游标对象(Cursor Object),如下所示。若数据库不提供“直接游标”的概念,则模块将不得不使用本规范所需的其他方法模拟游标。

self.cursor = self.connection.cursor()

3. Cursor Object表示一个数据库游标对象:

用于管理"fetch"操作的上下文。从同一个连接实例创建的游标不是孤立的,也就是说,游标对数据库所做的任何更改都可以立即被其他游标看到。游标应具有如下函数(下面仅列出cursor对象常用函数):close():关闭游标。游标关闭之后,继续执行cursor的其它操作,将会抛出异常。

execute(operation [, parameters]):准备并执行数据库操作(查询或命令)

executemany( operation, seq_of_parameters ):准备并执行数据库操作(查询或命令)。

fetchone():获取查询结果集的下一行,返回单个序列,在没有数据可用时返回None.

fetchall():获取查询结果的所有行,返回格式为序列的序列(例如:a list of tuples)。值得注意的是,cursor的arraysize属性可能会影响此操作的性能。

fetchmany([size=cursor.arraysize]): 获取查询结果的下一组行,返回格式为序列的序列(例如:a list of typles)。当没有更多的行可用时,返回empty sequence。每次调用要获取的行数由参数指定。如果未给定,则cursor的arraysize将确定要获取的行数。

4. 异常类型:

StandardError

|__Warning

|__Error

|__InterfaceError

|__DatabaseError

|__DataError

|__OperationalError

|__IntegrityError

|__InternalError

|__ProgrammingError

|__NotSupportedError

5. 总结:

以上就是简单总结的python-database packages设计共通性的常见功能,详情请见如下链接。无论是Pymysql还是cx_Oracle亦或是PsyCopg,它们的数据库交互性设计均遵循以上所述的功能。因此,学习了python-database packages设计具有共通性的常见功能,也就学会了如何使用python操作数据库。https://www.python.org/dev/peps/pep-0249/​www.python.org

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值