利用Navicat Premium 15软件连接mysql数据库,新建testdb数据库,并添加2个表usertest和userinfo。
main.py
#!/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() # 关闭连接
注意:本文归作者所有,未经作者允许,不得转载