利用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()
# 关闭连接
转载:https://blog.csdn.net/u013541325/article/details/117389067
查看评论