前言
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查询结果如下
接下来使用python转换成对应的代码查询
# coding:utf-8 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‘
# coding:utf-8 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‘
# coding:utf-8 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)
# coding:utf-8 import pymysql #连接数据库 c=pymysql.connect(host=‘47.98.66.11‘, port=3306, user=‘root‘, passwd=‘P@ssw0rd‘, db=‘aiopms‘ ) 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不一样。