python与mysql的操作连接和关闭
admin
2023-07-30 20:04:42
0
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
 
import pymysql  # 导入模块
 
myConn = pymysql.connect(
    host='127.0.0.1',  # 主机模块
    port=3306,  # 端口号
    user='root',  # 用户名
    password='root',  # 密码
    database='testdb',  # 需要连接的数据库
    charset='utf8'  # 指定编码utf8
)
 
if __name__ == '__main__':
    # myCursor = myConn.cursor()  # 获取游标,默认游标类型为元组形式
    myCursor = myConn.cursor(pymysql.cursors.DictCursor)  # 获取的查询结果更加规范化 便于分辨
    sql = "select * from userTest;"
    row_count = myCursor.execute(sql)  # row_count 受影响的行数
 
    for x in myCursor.fetchall():  # 取出所有的
        print(x)
 
    try:
        # ===插入记录===
        sql = "INSERT INTO userTest(id,name,age) VALUES(%s, %s, %s)"
 
        val = (6, "John", 23)
        myCursor.execute(sql, val)  # 执行sql语句
 
        """
        val = [(7, "Lily", 30),
               (8, "Martin", 35),
               (9, "Sally", 32)]
        myCursor.executemany(sql, val)  # 插入多行数据时,执行sql语句
        """
        # ===修改记录===
        # 以字符串形式书写SQL语句
        sql = "update userTest set name = '刘琪' where name = '韩寒'; "
        # 执行SQL语句
        row_count = myCursor.execute(sql)
 
        # ===删除记录===
        # 以字符串形式书写SQL语句
        sql = "delete from userTest where name= '王五' ;"
        # 执行SQL语句
        row_count = myCursor.execute(sql)
 
        myConn.commit()  # 增删改操作时,需要进行提交
    except Exception as err:
        # 检查异常原因是否是感兴趣的
        result1 = re.search('Duplicate entry.*key.*PRIMARY', str(err))
        # 如果是,什么都不用做
        # 否则(也不知道是什么原因),那就回滚吧
        if result1 is None:
            myConn.rollback()
        raise
 
    myCursor = myConn.cursor(pymysql.cursors.DictCursor)  # 获取的查询结果更加规范化 便于分辨
    sql = "select * from userTest;"
    row_count = myCursor.execute(sql)  # row_count受影响的行数
 
    for x in myCursor.fetchall():  # 取出所有的
        print(x)
 
    # =====使用数据来进行一下用户名和密码的认证操作======
    myCursor = myConn.cursor(pymysql.cursors.DictCursor)
    usr = input('请输入用户名:').strip()
    pwd = input('请输入密码:').strip()
    # 当已知用户名时 破解密码为 (feng'-- dfadasdad)
    # 当未知用户名密码时 破解密码为 (fsdf' or 1=1 -- fdsfsdfs)
 
    try:
        sql = "select * from userinfo where username='%s' and password='%s';" % (usr, pwd)
        # res我们说是得到的行数,如果这个行数不为零,说明用户输入的用户名和密码存在,如果为0说明不存在
        row_count = myCursor.execute(sql)  # pymysql 模块会自动将输入的特殊字符删除
 
        print(row_count)  # 如果输入的用户名和密码错误,这个结果为0,如果正确,这个结果为1
 
        if row_count:
            print('登陆成功')
        else:
            print('用户名和密码错误!')
    except Exception as err:
        # 检查异常原因是否是感兴趣的
        result1 = re.search('Duplicate entry.*key.*PRIMARY', str(err))
        # 如果是,什么都不用做
        # 否则(也不知道是什么原因),那就回滚吧
        if result1 is None:
            myConn.rollback()
        raise
 
    myCursor.close()  # 关闭游标
    myConn.close()  # 关闭连接
————————————————
版权声明:本文为CSDN博主「皓月盈江」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013541325/article/details/117389067

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...