Python中管理数据库

前言:Python中是利用MySQL模块和数据库之间建立联系. MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的
安装MySQL模块:

[root@foundation7 ~]# yum install mariadb-server -y
[root@foundation7 ~]# yum  install gcc -y
[root@foundation7 ~]# yum install MySQL_python -y
[root@foundation7 ~]# pip install Mysql-Python
pip 是一个安装和管理 Python 包的工具

一、查询数据库的内容

1.显示表的行数

# 首先导入MySQLdb
import MySQLdb
# 打开门
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='redhat',db='python')
# 伸出手
cur = conn.cursor()

# 拿东西
recont = cur.execute('select * from userInfo')

# 把手拿回来
cur.close()
# 关上门
conn.close()

print recont

这里写图片描述

2.显示表的内容

import MySQLdb
# 打开门
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='dd',db='python')

# 伸出手
cur = conn.cursor() #创建了一个“手”
# 拿到数据库的表头
cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
# 拿东西
# 这个操作影响了多少行数(有多少行被操作了)
recont = cur.execute('select * from userInfo')
data = cur.fetchall()

# 把手伸回来
cur.close()

# 把门关上
conn.close()
print recont
print data

这里写图片描述

3.将表头也显示出来

import MySQLdb

conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='redhat',db='python')

cur = conn.cursor(cursorclass= MySQLdb.cursors.DictCursor)

recont = cur.execute('select * from  userInfo')
data = cur.fetchall()

cur.close()

conn.close()
print recont
print data

这里写图片描述

二、增加数据库中的内容

1.插入单条数据

import MySQLdb
# 打开门
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='redhat',db='python')
# 伸出手
cur = conn.cursor()

# 操作数据
sql = 'insert into usermg(id,name,address) values(%s,%s,%s)'
params = ('1','gw','CHN')
recount = cur.execute(sql,params)

# 提交请求
conn.commit()

# 伸回手
cur.close()
# 关门
conn.close()

print recount

在phpmyadmin中查看添加成功
这里写图片描述

2.插入多条数据

import MySQLdb
# 打开门
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='redhat',db='python')
# 伸出手
cur = conn.cursor()

# 操作数据
li = [
    ('2','kobe','los'),
    ('3','james','cle')
]
recount = cur.executemany('insert into usermg (id,name,address) values(%s,%s,%s)', li)

# 提交请求
conn.commit()

# 伸回手
cur.close()
# 关门
conn.close()

print recount

Python中管理数据库_第1张图片

三、修改数据库中的内容

将gw的id修改为18

import MySQLdb
# 打开门
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='redhat',db='python')
# 伸出手
cur = conn.cursor()

# 操作数据
sql = 'update usermg set id = %s where name = %s'
params = ('18','gw',)
recount = cur.execute(sql,params)

# 提交请求
conn.commit()

# 伸回手
cur.close()
# 关门
conn.close()

print recount

Python中管理数据库_第2张图片

四、删除数据库中的内容

删除id为2 的这一行

import MySQLdb
# 打开门
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='redhat',db='python')
# 伸出手
cur = conn.cursor()

# 操作数据
sql = 'delete from usermg where id = %s'
params = (2,)
recount = cur.execute(sql,params)

# 提交请求
conn.commit()

# 伸回手
cur.close()
# 关门
conn.close()

print recount

这里写图片描述

五、数据库中的事务操作

1.基本概念

事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

2.事务的语句

 开始事务:BEGIN TRANSACTION(事务)
 提交事务:COMMIT TRANSACTION(事务)
 回滚事务:ROLLBACK TRANSACTION(事务)

3.情景模拟

在银行转账的时候,一个人账户里边的钱减少,另一个人账户里边的钱增加,这样实际上是在对数据库中的两条记录进行操作。如果我们在操作两条记录的过程中,发生了不可预知的错误,那么会导致一个人的钱减少了而另外一个人的钱数并没有增加。

防止这样事件发生的操作是:在对两条记录的操作都完成后再提交,如果中间发生了错误,那么数据库会回滚,滚到第一条操作之前的样子,保证数据库内容的正确。
count表的初始信息:
Python中管理数据库_第3张图片
用户1给用户2转账100元

import MySQLdb

conn = MySQLdb.connect(host = '127.0.0.1',user='root',passwd='redhat',db='python')

cur = conn.cursor()

sql = 'update count set money = %s where id = 1'
params = ('0',)
recount1 = cur.execute(sql,params)

sql = 'update count set money = %s where id = 2'
param = ('100',)
recount2 = cur.execute(sql,param)
conn.commit()

print recount1
print recount2

执行转账之后count表的信息:
Python中管理数据库_第4张图片

你可能感兴趣的:(Python,sql)