友情提示:380元/半年,儿童学编程,就上码丁实验室。
====建立环境====
1、先安装Python3.6
在公众号中回复Python3.6,获得下载地址。安装。
2、安装MySQL
在公众号中回复MySQL,获得下载地址。安装。
输入mysql -u root -p 启动MySQL
3、由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块。
pymysql 模块可以通过 pip 安装。但如果你使用的是 pycharm IDE,则可以使用 project python 安装第三方模块。
在Git Bash中,输入pip install PyMySQL,得到
好了准备就绪了,可以开始使用Python和MySQL的连接了,先试试,是否能成连接。
由于Python统一了数据库连接的接口,所以 pymysql 和 MySQLdb 在使用方式上是类似的:
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
====现在来做小练习====
在MySQL中
CREATE DATABASE mydb;
use mydb;
DROP TABLE IF EXISTS `trade`; CREATE TABLE `trade` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(6) NOT NULL COMMENT '用户真实姓名', `account` varchar(11) NOT NULL COMMENT '银行储蓄账号', `saving` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户储蓄金额', `expend` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户支出总计', `income` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户收入总计', PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; INSERT INTO `trade` VALUES (1,'Jobs','18012345678',0.00,0.00,0.00);
使用Python脚本实现增删改查和事务处理
# -*- coding:UTF-8 -*-
import pymysql
import pymysql.cursors
# 连接数据库
connect=pymysql.Connect(
host=’localhost’,
port=3306,
user=’root’,
passwd=’123′,
db=’mydb’,
charset=’utf8′
)
#获取游标
cursor=connect.cursor()
#插入数据
sql=”INSERT INTO trade(name,account,saving) VALUES (‘%s’,’%s’,%.2f)”
data=(‘Lery’,’12345632123′,1000)
cursor.execute(sql % data)
connect.commit()
print(‘成功插入’,cursor.rowcount,’条数据’)
#修改数据
sql=”UPDATE trade SET saving=%.2f WHERE account=’%s’”
data=(8889,’12345632123′)
cursor.execute(sql % data)
connect.commit()
print(‘成功修改’,cursor.rowcount,’条数据’)
#查询数据
sql=”SELECT name,saving FROM trade WHERE account=’%s’”
data=(’12345632123′)
cursor.execute(sql % data)
for row in cursor.fetchall():
print(“Name:%stSaving:%.2f” % row)
print(‘共查出’,cursor.rowcount,’条数据’)
#删除数据
sql=”DELETE FROM trade WHERE account =’%s’ LIMIT %d”
data=(’12345632123′,1)
cursor.execute(sql % data)
connect.commit()
print(‘成功删除’,cursor.rowcount,’条数据’)
#事务处理
sql_1 = “UPDATE trade SET saving = saving + 1000 WHERE account = ’18012345678′ “
sql_2 = “UPDATE trade SET expend = expend + 1000 WHERE account = ’18012345678′ “
sql_3 = “UPDATE trade SET income = income + 2000 WHERE account = ’18012345678′ “
try:
cursor.execute(sql_1) #储蓄增加1000
cursor.execute(sql_2) #支出增加1000
cursor.execute(sql_3) #收入增加2000
except Exception as e:
connect.rollback() #事务回滚
print(‘事务处理成功’,cursor.rowcount)
else:
connect.commit() #事务提交
print(‘事务处理成功’, cursor.rowcount)
#关闭连接
cursor.close()
connect.close()
运行结果: