027 mysql

/*
时间:2021/12/18
功能:MySql
目录: 
    一: 测试code
    二: 异常处理
    三: 安全参数
*/

一: 测试code

import pymysql

if __name__ == '__main__':
    conn = pymysql.connect(host="192.168.52.128",   # ip
                           port=3306,               # 端口
                           user="root",             # 登录用户
                           password="mysql",        # 登录密码
                           database="py",           # 数据库名
                           charset="utf8")          # 通讯编码

    # 获取游标
    cursor = conn.cursor()

    # 查询数据
    sql = "select * from st;"       # 查询语句
    row_count = cursor.execute(sql) # 执行语句
    print("SQL:执行影响行数%d" % row_count)   # 影响行数

    # 获出数据 : 一行
    # print(cursor.fetchone())

    # 获出数据 : 全部
    result = cursor.fetchall()
    for row in result:
        print(row)

    # 收尾操作
    cursor.close()  # 关闭游标
    conn.close()    # 关闭连接

二: 异常处理

import pymysql

if __name__ == '__main__':
    conn = pymysql.connect(host="192.168.52.128",   # ip
                           port=3306,               # 端口
                           user="root",             # 登录用户
                           password="mysql",        # 登录密码
                           database="py",           # 数据库名
                           charset="utf8")          # 通讯编码

    # 获取游标
    cursor = conn.cursor()

    try:
        sql = "delete from st where name = '小周'"
        sql_2 = "update st set name = '铁蛋' where name = '王五'"
        row_count = cursor.execute(sql)
        row_count = cursor.execute(sql_2)
        # print("SQL:执行影响行数%d" % row_count)  # 影响行数
        conn.commit()
    except Exception as e:
        conn.rollback() # 回滚数据


    # 收尾操作
    cursor.close()  # 关闭游标
    conn.close()    # 关闭连接

三: 安全参数

import pymysql

if __name__ == '__main__':
    conn = pymysql.connect(host="192.168.52.128",   # ip
                           port=3306,               # 端口
                           user="root",             # 登录用户
                           password="mysql",        # 登录密码
                           database="py",           # 数据库名
                           charset="utf8")          # 通讯编码

    # 获取游标
    cursor = conn.cursor()

    try:
        # # SQL注入 : 输入 ' or 1 = 1 or '
        # find_name = input("请输入物品名称:")
        # sql = "select * from st where name = '%s'" % find_name
        # row_count = cursor.execute(sql)

        # 安全方式
        find_name = input("请输入物品名称:")
        params = [find_name]
        count = cursor.execute("select * from st where name = %s", params)

        conn.commit()

        # 获出数据 : 全部
        result = cursor.fetchall()
        for row in result:
            print(row)

    except Exception as e:
        conn.rollback() # 回滚数据

    # 收尾操作
    cursor.close()  # 关闭游标
    conn.close()    # 关闭连接
原文地址:https://www.cnblogs.com/huafan/p/15704229.html