最新消息:

Python3.6与MySQL建立连接

Python 少儿编程 1545浏览 0评论

 

Python3.6与MySQL建立连接

====建立环境====

1、先安装Python3.6

在公众号中回复Python3.6,获得下载地址。安装。

2、安装MySQL

在公众号中回复MySQL,获得下载地址。安装。

输入mysql -u root -p  启动MySQL

Python3.6与MySQL建立连接

3、由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块。

pymysql 模块可以通过 pip 安装。但如果你使用的是 pycharm IDE,则可以使用 project python 安装第三方模块。

在Git Bash中,输入pip install PyMySQL,得到

Python3.6与MySQL建立连接

 

好了准备就绪了,可以开始使用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()

 

运行结果:

Python3.6与MySQL建立连接

您必须 登录 才能发表评论!