pymysql是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb。
环境准备
python3.7
使用pip安装PyMySQL
pip install pymysql
先使用第三方工具连接mysql数据库,比如navicat连接mysql
连接名:随便命名
主机名或ip地址:mysql服务的ip地址
端口:3306 (端口号,默认一般是3306)
用户名:root (授权远程登陆的用户名)
密码:123456 (授权远程登陆的密码)
查询操作
如存在一个aiopms数据库,里面有一张pms_knowledges_sort,有sortid、name、desc、status四个字段,使用sql查询结果如下
搭建开源opms项目
接下来使用python转换成对应的代码查询
import pymysql
#打开数据库连接
c=pymysql.connect(host='47.98.66.11',
port=3306,
user='root',
password='P@ssw0rd',
db='aiopms')
#使用cursor()方法创建一个游标对象cu
#方式一,返回元组嵌套元组
cu=c.cursor()
# #运行结果:((1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,))
#方式二,返回列表嵌套字典
# cu=c.cursor(cursor=pymysql.cursors.DictCursor)
#运行结果:[{'sortid': 1}, {'sortid': 2}, {'sortid': 3}, {'sortid': 4}, {'sortid': 5}, {'sortid': 6}, {'sortid': 7}, {'sortid': 8}]
#使用execute()方法执行sql查询
cu.execute("select sortid from pms_knowledges_sort")
#使用fetchall()方法获取查询结果
result=cu.fetchall()
print(result)
#关闭数据库连接
c.close()
#元组格式,取第一个值 1
print(result[0][0])
# #元组格式,取所有结果的值
for i in range(len(result)):
print("第{}个的值:{}".format(i+1,result[i][0]))
#结果
# 第1个的值:1 ...
#字典格式,取第一个值 1
# print(result[0]["sortid"])
运行结果:
((1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,))
1
第1个的值:1
第2个的值:2
第3个的值:3
第4个的值:4
第5个的值:5
第6个的值:6
第7个的值:7
第8个的值:8
如果想查询结果以字典格式输出,可以用c.cursor(cursor=pymysql.cursors.DictCursor)
c.cursor(),返回元组嵌套元组
删除操作
使用python删除一条数据,比如,删除pms_users表中的xingzi这条记录
delete from pms_users where username=‘xingzi’
import pymysql
#打开数据库连接
c=pymysql.connect(host='47.98.66.11',
port=3306,
user='root',
password='P@ssw0rd',
db='aiopms')
#使用cursor()方法获取操作游标
cu=c.cursor()
try:
#执行
cu.execute("delete from pms_users where username='xingzi'")
#提交
c.commit()
except Exception as e:
print("操作报错:{}".format(e))
#错误回滚
c.rollback()
finally:
c.close()
更新操作
更新username用户名是maomao的用户,把status改成2
update pms_users set status=2 where username=‘maomao’
import pymysql
#连接数据库
c=pymysql.connect(host='47.98.66.11',
port=3306,
user='root',
passwd='P@ssw0rd',
db='aiopms')
#使用cursor()方法获取操作游标
cu=c.cursor()
try:
#执行sql
cu.execute('update pms_users set status=2 where username="maomao"')
c.commit() #提交
except Exception as e:
print("执行报错:{}".format(e))
c.rollback() #错误回滚
finally:
c.close()
新增数据
往数据库里面插入一条数据,比如在pms_knowledges_sort表中插入一条数据
insert into pms_knowledges_sort values(9,“学习”,“”,1)
import pymysql
#连接数据库
c=pymysql.connect(host='47.98.66.11',
port=3306,
user='root',
passwd='P@ssw0rd',
db='aiopms'
)
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:725638078
cu=c.cursor()
try:
cu.execute('insert into pms_knowledges_sort values(9,"学习","",1)')
c.commit()
except Exception as e:
print("执行报错:{}".format(e))
c.rollback()
finally:
c.close()
从上面的代码可以看出,处理查询的代码不一样,新增、删除、更新数据库操作代码都一样,只是执行的sql不一样。