前言: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 包的工具
# 首先导入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
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
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
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
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
将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
删除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
事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
开始事务:BEGIN TRANSACTION(事务)
提交事务:COMMIT TRANSACTION(事务)
回滚事务:ROLLBACK TRANSACTION(事务)
在银行转账的时候,一个人账户里边的钱减少,另一个人账户里边的钱增加,这样实际上是在对数据库中的两条记录进行操作。如果我们在操作两条记录的过程中,发生了不可预知的错误,那么会导致一个人的钱减少了而另外一个人的钱数并没有增加。
防止这样事件发生的操作是:在对两条记录的操作都完成后再提交,如果中间发生了错误,那么数据库会回滚,滚到第一条操作之前的样子,保证数据库内容的正确。
count表的初始信息:
用户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