Python 数据库编程
Python能够直接通过数据库接口,也可以通过ORM来访问关系数据库。
我们可以去https://www.python.org/dev/peps/pep-0249查找到支持DB-API的各种数据库模块,文档,SIG等。
Python所有的数据库接口程序都在一定程度上遵守Python DB-API 规范。DB-API定义了一系列必须的对象和数据库存取方式,以便为各种底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。由于DB-API 为不同的数据库提供了一致的访问接口,在不同的数据库之间移植代码成为一件轻松的事情。
我这边因为本身使用的是MySQL,所以直接用MySQLdb模块进行举例。
下载并安装MySQLdb模块:
http://www.codegood.com/archives/129
安装完之后用import MySQLdb测试一下是否正确安装:
PS: ImportError DLLload failed: %1 不是有效的 Win32 应用程序,这是因为我在64位系统上装了32位的模块,重新下载一下64位的重新安装一下就能解决这个问题
我们先看一下MySQLdb的具体操作流程:
通过一个小例子看一下MySQLdb的基本运作:
#!/usr/bin/ env python
#coding=utf-8
from MySQLdb import *
#建立和数据库系统的连接
conn = connect(host='localhost', user='root',passwd='')
#获取操作游标
cursor = conn.cursor()
#执行SQL,创建一个数据库.
cursor.execute("""create database if not exists python""")
#选择数据库
conn.select_db('python')
#执行SQL,创建一个数据表.
cursor.execute("""create table test(id int, info varchar(100)) """)
#插入一条记录
value = [1,"inserted"]
try:
# 执行sql语句
cursor.execute("insert into test values(%s,%s)",value)
# 提交到数据库执行
conn.commit()
except:
# Rollback in case there is any error
conn.rollback()
# SQL 删除语句
sql = "DELETE FROM test WHERE 1=1 "
try:
# 执行SQL语句
cursor.execute(sql)
# 提交修改
conn.commit()
except:
# 发生错误时回滚
conn.rollback()
#批量插入数据
values=[]
#生成插入参数值
for i in range(20):
values.append((i,'Hello mysqldb, I am recoder ' + str(i)))
try:
# 插入多条记录
cursor.executemany("""insert into test values(%s,%s) """, values)
# 提交修改
conn.commit()
except:
# 发生错误时回滚
conn.rollback()
#查询数据
sql = "SELECT * FROM test WHERE 1=1"
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
id = row[0]
info = row[1]
# 打印结果
print "id=%s,info=%s" %(id,info)
except:
print "Error: unable to fecth data"
#关闭连接,释放资源
cursor.close()
当然,现在不止一个mysql,而是有很多种数据库系统,他们中绝大多数都有Python接口,但是如果要驾驭这些系统,你得懂得SQL,如果你仅仅是喜欢Python但是不喜欢甚至讨厌SQL的人,但是又想使用关系数据库作为你的数据储备,我们还可以使用ORM。
下一篇我们简单了解一下ORM。