python与数据库交互结构_Python与数据库简单交互

本文档原文来自:http://www.runoob.com/python/python-mysql.html

Python DB-API使用流程

尝试与数据库进行对接

创建数据表

在数据表中插入记录

在数据表中查询记录

在数据表中更新记录

在数据表中删除记录

执行事务机制

Python DB-API使用流程

Python DB-API使用流程:

• 引入 API 模块。

• 获取与数据库的连接。

• 执行SQL语句和存储过程。

• 关闭数据库连接。

1. 尝试与数据库进行对接

# -*- coding: UTF-8 -*-

import MySQLdb

#打开数据库链接

db = MySQLdb.connect("localhost","root","baobao123","testdb")

#使用cursor()方法获取操作游标

cursor = db.cursor()

#使用execute()方法执行SQL语句

cursor.execute("SELECT VERSION()")

#使用 fetchone() 方法获取一条数据库。

data = cursor.fetchone()

print "Database version: %s" % data

#关闭数据库链接

db.close()

2. 创建数据表

# -*- coding: UTF-8 -*-

import MySQLdb

#打开数据库链接

db = MySQLdb.connect("localhost","root","baobao123","testdb")

#使用cursor()方法获取操作的游标

cursor = db.cursor()

#如果数据表employee存在,则删除数据表

cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

#创建数据表SQL语句

sql = """

CREATE TABLE employee(

FIRST_NAME CHAR(20) NOT NULL,

LAST_NAME CHAR(20),

AGE INT,

SEX CHAR,

INCOME FLOAT)

"""

cursor.execute(sql)

#关闭数据库链接

db.close()

3. 在数据表中插入记录

# -*- coding: UTF-8 -*-

import MySQLdb

#打开数据库链接

db = MySQLdb.connect("localhost","root","baobao123","testdb")

#使用cursor()方法获取操作游标

cursor = db.cursor()

#SQL插入语句

sql = """

INSERT INTO employee(FIRST_NAME,LAST_NAME,AGE,SEX,INCOME)

VALUES('Mac','Mohan',20,'M',2000)

"""

try:

#执行SQL语句

cursor.execute(sql)

#提交到数据库执行

db.commit()

except:

# Rollback in case there is any error

db.rollback()

# 关闭数据库链接

db.close()

4. 在数据表中查询记录

# -*- coding: UTF-8 -*-

import MySQLdb

#打开数据库链接

db = MySQLdb.connect("localhost","root","baobao123","testdb")

#使用cursor()方法获取操作游标

cursor = db.cursor()

#SQL查询语句

sql = "SELECT * FROM employee WHERE INCOME > '%d'" %(1000)

try:

#执行sql语句

cursor.execute(sql)

#获取所有记录列表

result = cursor.fetchall()

for row in result:

fname = row[0]

lname = row[1]

age = row[2]

sex = row[3]

income = row[4]

#打印结果

print "fname=%s, lname=%s, age=%d, sex=%s, income=%d" %(fname, lname, age, sex, income)

except:

print "Error: unable to fetch data"

#关闭数据库链接

db.close()

5. 在数据表中更新记录

# -*- coding: UTF-8 -*-

import MySQLdb

#打开数据库链接

db = MySQLdb.connect("localhost","root","baobao123","testdb")

#使用cursor()方法获取操作游标

cursor = db.cursor()

#SQL更新语句

sql = "UPDATE EMPLOYEE SET AGE = AGE+1 WHERE SEX = '%c'" %('M')

try:

#执行SQL语句

cursor.execute(sql)

#提交到数据库执行

db.commit()

except:

#发生错误的时候回滚

db.rollback

#关闭数据库链接

db.close()

6. 在数据表中删除记录

# -*- coding: UTF-8 -*-

import MySQLdb

#打开数据库链接

db = MySQLdb.connect("localhost","root","baobao123","testdb")

#使用cursor()方法获取操作游标

cursor = db.cursor()

#SQL删除语句

sql = "DELETE FROM employee WHERE AGE > %d" %(20)

try:

#执行SQL语句

cursor.execute(sql)

#提交到数据库

db.commit()

except:

#发生错误的时候回滚

db.rollback()

#关闭链接

db.close()

执行事务机制

事务机制可以确保数据一致性。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

• 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

• 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

• 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

• 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。

对于支持事务的数据库,在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。

commit( )方法游标的所有更新操作;

rollback( )方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。

# SQL删除记录语句

sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)

try:

# 执行SQL语句

cursor.execute(sql)

# 向数据库提交

db.commit()

except:

# 发生错误时回滚

db.rollback()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值