navicat 使用 pymysql模块

新健库 ,新增字段+类型+约束

设计表:外键(自增)

新建查询

建立表模型 

创建表 及数据(根据模型看)
sql 练习题(根据模型看)

pymysql 模块

# import pymysql
# #连接
# conn = pymysql.connect(
#     host = 'localhost',
#     port = 3306,
#     user = 'root',
#     password = '',
#     database = 'day41',
#     charset = 'utf8'
# )

# 游标
# cursor =conn.cursor() #执行完毕后返回的结果默认的以元组显示
# cursor =conn.cursor(pymysql.cursors.DictCursor) #将查询结果做成字典的格式

# pymysql操作数据库
# 执行sql 语句

# 语句在mysql里面执行
# res=cursor.execute("select * from class") #执行sql语句 返回sql查询成功的记录数目
# print(res)  #查询到的数据总条数


# print(cursor.fetchone()) # {'cid': 1, 'caption': '三年二班'} 获取一条查询结果
# 类似于管道取一条少一条
# print(cursor.fetchone()) #{'cid': 2, 'caption': '三年三班'} 获取一条查询结果
#
# # print(cursor.fetchone()) #{'cid': 3, 'caption': '一年二班'} 获取一条查询结果
# cursor.scroll(1,'relative') #相对移动,第三条数据被截取
#
# print(cursor.fetchall())  #[{'cid': 4, 'caption': '二年九班'}]


# cursor.scroll(1,'absolute') #绝对移动,参照开始位置
# print(cursor.fetchall()) #[{'cid': 2, 'caption': '三年三班'}, {'cid': 3, 'caption': '一年二班'}, {'cid': 4, 'caption': '二年九班'}]

sql 注入问题不要手动去拼接查询的sql语句

username = input(">>>:").strip()
password = input(">>>:").strip()
sql = "select * from user where username='%s' and password='%s'"%(username,password)

# 用户名正确
username >>>: jason' -- jjsakfjjdkjjkjs
# 用户名密码都不对的情况
username >>>: xxx' or 1=1 --asdjkdklqwjdjkjasdljad  #在sql里面 --代表注释掉 约束条件来判断的时候 1=1 is Ture
password >>>: ''


正确注入

  username = input(">>>:").strip()
  password = input(">>>:").strip()

  
sql = "select * from user where username=%s and password=%s"

  
res=cursor.execute(sql,(username,password)) #sql会自己去拼接

增 改查

import pymysql

conn = pymysql.connect(host='localhost',
                       port=3306,
                       user='root',
                       password='',
                       database='day41', #哪个库下面
                       charset='utf8',
                       autocommit=True  # 插入数据之后 确保无误后才会真正修改到数据库 在这里声明的话每次操作都会直接修改到数据库
                       )
cursor = conn.cursor(pymysql.cursors.DictCursor)
username = input('》》》:')
password = input('》》》: ')

#插入数据
# sql = "insert into userinfo(name,password) values (%s,%s)"  # 必须让mysql自己拼接 不然有可能自己拼接的在mysql里面执行的时候约束条件
# 有一个判断就直接进去了数据就不安全了
# res = cursor.execute(sql,(username,password))
# conn.commit() #确保数据无误后,commit之后才会将数据真正修改到数据库

# if res:
    # print(cursor.fetchall())
    # pass
# else:
#     print('用户名或密码错误!')


#查询验证
# sql='select * from userinfo where name =%s and password=%s '
# res=cursor.execute(sql,(username,password))
# conn.commit()
# if res:
#     pass
# else:
#     print('密码或用户名错误')


#更新数据
# sql = "update userinfo set name=%s where id =%s"
#
# res=cursor.execute(sql,(username,password))
# if res:
#     pass
# else:
#     print('error')

猜你喜欢

转载自www.cnblogs.com/lakei/p/10877739.html