Python中对数据库的操作

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行增加、删除、查找、修改等操作。
Python中是利用MySQL模块和数据库之间建立联系.
首先我们先说一下怎样安装MySQL模块:
1.yum install MySQL-python.x86_64
2.pip install MySQL-python(pip 是在网上下载第三方软件包的命令)

一.在数据库中增加记录

1.一次增加一条记录

# 导入数据库模块
import MySQLdb

# 打开数据库的门,创建一个数据库对象
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='jay', db='python')
# host是本机的回环接口,user是数据库的用户名,passwd是用户名对应的登陆密码.db是要操作的数据库

# 伸出一只手,利用这只手对数据库记录进行操作
cur = conn.cursor()
# 定义sql语句操作数据,插入记录
sql = 'insert into userInfo(username,passwd) values(%s,%s)'  # %s是占位符,  
params = ('harry', '890')
recount = cur.execute(sql, params)

# 提交请求
conn.commit()
# 把手伸回来
cur.close()
# 关上门
conn.close()
print recount


2.一次导入多条记录
import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='jay', db='python')
# 伸出手
cur = conn.cursor()
# 操作数据
sql = 'insert into userInfo(username,passwd) values(%s,%s)'
# %s是占位符,
params = [('natasha','134'),
          ('jack','345'),
          ('lucy','234')]
# 注意:增加多条数据是将多个数据元组放进一个列表中,使用的方法是executemany()
recount = cur.executemany(sql, params)
# 提交请求
conn.commit()
# 把手伸回来
cur.close()
# 关上门
conn.close()
print recount

二.删除数据库中的数据

import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='jay', db='python')
# 伸出手
cur = conn.cursor()
# 操作数据,sql语句是delete关键字
sql = 'delete from userInfo where username=%s'
# %s是占位符,
params = ('tom',)
recount = cur.execute(sql, params)
# 提交请求
conn.commit()
# 把手伸回来
cur.close()
# 关上门
conn.close()
print recount

三.查询数据库中的数据

import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='jay', db='python')
# 伸出手
cur = conn.cursor()
# 操作数据,sql语句关键字是select
sql = 'select * from userInfo' # 也可以直接将sql语句写进recount = cur.execute(sql)中
# %s是占位符,
recount = cur.execute(sql)
data = cur.fetchall()
# 提交请求
conn.commit()
# 把手伸回来
cur.close()
# 关上门
conn.close()
print recount
print data

四.修改数据库中的数据

import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='jay', db='python')
# 伸出手
cur = conn.cursor()
# 操作数据,sql关键字是update
sql = 'update userInfo set passwd=%s where username=%s'
# %s是占位符,
params = ('hello', 'jay')
recount = cur.execute(sql, params)
# 提交请求
conn.commit()
# 把手伸回来
cur.close()
# 关上门
conn.close()
print recount

五.事务数据库事务(Database Transaction)

是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠

我们想象一个场景,在用支付宝转账的时候,一个人账户里边的钱减少,另一个人账户里边的钱增加,这样实际上是在对数据库中的两条记录进行操作。如果我们在操作两条记录的过程中,发生了不可预知的错误,那么会导致一个人的钱减少了而另外一个人的钱数并没有增加。防止这样事件发生的操作是:在对两条记录的操作都完成后再提交,如果中间发生了错误,那么数据库会回滚,滚到第一条操作之前的样子,保证数据库内容的正确。

import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='jay',db='money')
cur = conn.cursor()
sql = 'update money set count = %s where id = 1'
params = (0,)
recount = cur.execute(sql,params)
conn .commit()

sql = 'update money set count = %s where id = 2'
param = (100,)
recount = cur.execute(sql,param)
conn.commit()
# 如果只提交上边一个的操作,那么在数据库中只有第一个的数据发生改变,
# (借钱和还钱的时侯不和常理)
# 一般防止这种操作发生,我们给两次操作起不同名字,在最终只提交一次
# 如果有一个的操作的步骤未完成,那么跟他有关系的另一个操作也不会发生

猜你喜欢

转载自blog.csdn.net/jay_youth/article/details/81214114