-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Python的数据库接口
-
任何支持2.0版本的DB API的数据库模块都必须定义3个描述模块特性的全局变量.
- apilevel - 所使用的Python DB API版本.
- threadsatety - 模块的线程安全等级. 0表示线程完全不共享模块,3表示模块式完全线程安全的. 1表示线程本身可以共享模块,但不对应连接共享. 如果不使用多线程,则可以忽略这个变量.
- paramstyle - 在SQL查询中使用的参数风格. 在执行多次类似查询的时候,参数是如何被拼接到SQL查询中的.
-
为了使用底层的数据库系统,首先必须连接到它,使用connect(). connect()函数的常用参数如下.
- dsn - 数据源名称,给出该参数表示数据库依赖.
- user - 用户名
- password - 用户密码
- host - 主机名
- database - 数据库名
-
connect()函数将返回一个connect对象,该对象表示目前和数据库的会话. 支持的方法如下.
- close() - 关闭和数据库的连接, 连接对象和游标都不可使用.
- commit() - 如果支持的话就将提交挂起的事物, 否则不做任何事.
- rollback() - 回滚挂起的事物(可能不可用).
- cursor() - 返回连接的游标对象.
-
cursor()方法将返回一个游标对象.通过游标执行SQL查询并检查结果. 常用的方法如下.
- callproc(name[, params]) - 使用给定的名称和参数调用已命名的数据库过程.
- close() - 关闭游标,之后游标不可用.
- execute(oper[, params]) - 执行一个SQL,可能带有参数.
- executemany(oper, pseq) - 对序列中的每一个参数集执行SQL操作.
- fetchone() - 把查询的结果集中的下一行保存为序列, 或者None.
- fetchmany([size]) - 获取查询结果集中的多行,默认尺寸为arraysize.
- fetchall() - 将所有(剩余)的行作为序列的序列.
- nextset() - 跳至下一个可用的结果集(可选).
- setinputsizes(sizes) - 为参数预先定义内存区域.
- setoutputsizes(size[, col]) - 为获取的大数据的值设定缓冲区尺寸.
-
cursor对象的特性(property).
- description - 结果列描述的序列,只读.
- rowcount - 结果中的行数,只读.
- arraysize - fetchmany中返回的行数,默认为1.
-
底层数据库可能需要一些特殊的类型的值,如果需要和Python的类型对应,需要使用对应的api将Python的对象封装成数据库支持的类型.
import sqlite3
with sqlite3.connect('somedatabase.db') as db:
db.cursor()
db.commit()
-
使用cursor执行select语句时, 先使用execute()执行语句,然后用fetchall()获得结果.
-
如果不是大量的数据或者有大型数据库服务器的需求,可以使用sqlite3 in Python. 该数据库为Python内置的服务器,可以满足一些小型的需求. 使用比较方便.
Metadata
Metadata
Assignees
Labels
No labels