python学习4--python3连mysql增删改查

前言

pymysql是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb。

环境准备

python3.7

使用pip安装PyMySQL

pip install pymysql

python学习4--python3连mysql增删改查

 

 先使用第三方工具连接mysql数据库,比如navicat连接mysql

连接名:随便命名

主机名或ip地址:mysql服务的ip地址

端口:3306 (端口号,默认一般是3306)

用户名:root (授权远程登陆的用户名)

密码:123456 (授权远程登陆的密码)

python学习4--python3连mysql增删改查

 

 查询操作

如存在一个aiopms数据库,里面有一张pms_knowledges_sort,有sortid、name、desc、status四个字段,使用sql查询结果如下

搭建开源opms项目

python学习4--python3连mysql增删改查

 

 python学习4--python3连mysql增删改查

 

 接下来使用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'

python学习4--python3连mysql增删改查

 

# 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'

python学习4--python3连mysql增删改查

 

 

# 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)

python学习4--python3连mysql增删改查

# 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不一样。

上一篇:【NOIP2020】移球游戏


下一篇:rx6700xt和rtx3070的差距有多大 RX6700 XT和rtx3070有什么区别