【程序员技术练级】学习一门脚本语言python(三)跟数据库打交道

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

接着上一篇,该篇讲述使用python对数据库进行基本的CRUD操作,这边以sqlite3为例子,进行说明。sqlite3 是一个非常轻型的数据库,安装和使用它是非常简单的,这边就不进行讲述了。

在python下,已经自带了sqlite3模块,供我们使用,这个模块的用途其实和java当中的jdbc驱动是类似的,通过它,我们就可以非常方便的和sqlite3进行各种操作了。

好了,开始吧。

python的数据库模块有统一的接口标准,所有的操作都有统一的模式,大概是分为以下几步(假设使用的是sqlite3模块):

用sqlite3.connect()获取数据库的连接,假设连接为conn如果我们的操作不需要返回结果,那么就可以直接执行conn.execute(sql)。由于数据库事务隔离级别的不同,如果我们执行的是对数据库的修改或者插入,那么我们需要执行conn.commit()如果需要返回结果,那么conn.cursor()创建游标对象cursor,通过cursor.execute查询数据库,用cursor.fetchall/cur.fetchone/cur.fetchmany返回查询结果。由于数据库事务隔离级别的不同,如果我们执行的是对数据库的修改或者插入,那么我们需要执行cur.commit()最后,最重要的是对conn和cursor进行关闭,cursor.close()、conn.close() (先关闭cursor,在关闭conn)

具体的相关CRUD实现代码如下:

importosimportsqlite3#根据传入的path获取一个数据库连接,如果path非法,那么创建一个临时的内存数据库defget_conn(path):

conn=sqlite3.connect(path)ifos.path.exists(path)andos.path.isfile(path):PRint('database path is %s'%format(path))returnconnelse:

conn=Nonereturnsqlite3.connect(':memory')

#获取游标defget_cursor(conn):ifconnisnotNone:returnconn.cursor()else:returnget_conn('').cursor()

#创建表数据defcreate_table(conn, sql):ifsqlisnotNoneandsql !='':

cursor=get_cursor(conn)

cursor.execute(sql)

conn.commit()

close_all(conn, cursor)#关闭数据库连接defclose_all(conn, cursor):try:ifcursorisnotNone:

cursor.close()finally:ifconnisnotNone:

conn.close()

#CURD操作,需要返回值,查询是肯定有返回值defcrud(conn, sql, data):

cursor=get_cursor(conn)

n=cursor.execute(sql, data)print("n", n.rowcount)

fetchall=cursor.fetchall()

conn.commit()

close_all(conn, cursor)returnfetchall

#CRUD操作,不需要返回值,查询是肯定有返回值defcrud(conn, sql, data):

cursor=get_cursor(conn)

n=cursor.execute(sql, data)

conn.commit()

close_all(conn, cursor)

一个简单的例子:

conn = get_conn('D:/temp/sqlite3/test.db')

fetchall= crud(conn,'select * from student','')#假设返回的数据有三个字段forrowinfetchall:print('name: %s, age: %d, address: %s'% (row[0], row[1], row[2]))

好了,上面的代码就是最简单的对python的数据库操作了。

大家如果有什么问题或者文件有什么错误的话,可以留言大家一起探讨!

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航