如何使⽤python连接mysql数据库
⾸先在我们⼯作中,难免遇到给测试环境造⼤量的测试数据,给数据库造数据有很多⽅式⽅法,这⾥⽤python造数据⼀般是这样的:第⼀步进⼊Linux系统⾥已部署好的mysql数据库登录如:/app/mysql/bin/mysql -uroot -pBccdr@123456
第⼆步:进⼊数据库后先验证数据库是否正常,⽐如先查询库,表等,show database;  use 库名;等等
第三步:我这边python本地没有装mysql库,先在本地安装库。我python安装在D盘,⾸先切换到D盘后执⾏pip install pymysql
第四步:在linux系统⾥的mysql数据库先创建⼀个库⽤来做专门测试⽤的
第五步:打开pycharm后,新创建⼀个测试包及测试.py⽂件
由于Python统⼀了数据库连接的接⼝,所以 pymysql 和 MySQLdb 在使⽤⽅式上是类似的
#创建数据库连接pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端⼝号
user(str): ⽤户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码,存在中⽂的时候,连接需要添加charset='utf8',否则中⽂显⽰乱码。
connection对象⽀持的⽅法
cursor() 使⽤该连接创建并返回游标
commit() 提交当前事务,不然⽆法保存新建或者修改的数据
rollback() 回滚当前事务
close() 关闭连接
cursor对象⽀持的⽅法
execute(op) 执⾏SQL,并返回受影响⾏数
fetchone() 取得结果集的下⼀⾏
fetchmany(size) 获取结果集的下⼏⾏
fetchall() 获取结果集中的所有⾏
rowcount() 返回数据条数或影响⾏数
pycharm下载第三方库close() 关闭游标对象
==================================mysql======================================
⾸先在连接数据库之前,先创建⼀个交易表,⽅便测试 pymysql 的功能:
CREATE TABLE trade (
id int(4) unsigned NOT NULL AUTO_INCREMENT,
name varchar(6) NOT NULL COMMENT '⽤户真实姓名',
account varchar(15) 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,'乔布斯','180********',0.00,0.00,0.00);
===================================python===================================
使⽤Python脚本实现增删改查和事务处理,源码如下:
import pymysql.cursors
# 连接数据库
connect = pymysql.Connect(
host='localhost',
port=3310,
user='woider',
passwd='3243',
db='python',
charset='utf8'
)
# 获取游标
cursor = connect.cursor()
# 插⼊数据
sql = "INSERT INTO trade (name, account, saving) VALUES ( '%s', '%s', %.2f )"
data = ('雷军', '135********', 10000)
connectmit()
print('成功插⼊', wcount, '条数据')
# 修改数据
sql = "UPDATE trade SET saving = %.2f WHERE account = '%s' "
data = (8888, '135********')
connectmit()
print('成功修改', wcount, '条数据')
# 查询数据
sql = "SELECT name,saving FROM trade WHERE account = '%s' "
data = ('135********',)
for row in cursor.fetchall():
print("Name:%s\tSaving:%.2f" % row)
print('共查出', wcount, '条数据')
# 删除数据
sql = "DELETE FROM trade WHERE account = '%s' LIMIT %d"
data = ('135********', 1)
connectmit()
print('成功删除', wcount, '条数据')
# 事务处理
sql_1 = "UPDATE trade SET saving = saving + 1000 WHERE account = '180********' " sql_2 = "UPDATE trade SET expend = expend + 1000 WHERE account = '180********' " sql_3 = "UPDATE trade SET income = income + 2000 WHERE account = '180********' " try:
except Exception as e:
print('事务处理失败', e)
else:
connectmit()  # 事务提交
print('事务处理成功', wcount)
# 关闭连接
cursor.close()
connect.close()
======================测试结果========================

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。