zoukankan      html  css  js  c++  java
  • python学习4--python3连mysql增删改查

    前言

    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转换成对应的代码查询

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

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    Joshua Bloch错了? ——适当改变你的Builder模式实现
    集成基于OAuth协议的单点登陆
    集成基于CAS协议的单点登陆
    数据库设计中的Soft Delete模式
    完成C++不能做到的事
    ExtJS in Review
    DTO – 服务实现中的核心数据
    保存好你的密码 —— 从芝麻金融被攻破说起
    WPF
    C# 反编译防范
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13518418.html
Copyright © 2011-2022 走看看