pymysql模块
''' 支持python代码支持操作数据库MySQL ''' pip3 install pymysql
代码
import pymysql conn = pymysql.connect( host='127.0.0.1', port=3306, user = 'root', password='123456', database='day48', # 一定要指定一个库 charset='utf8' # 编码千万不要写- ) # 连接数据库 cursor= conn.cursor(cursor=pymysql.cursors.DictCursor) # 产生一个游标对象(就是用来帮你执行命令的) ''' cursor=pymysql.cursors.DictCursor 将查询结果以字典形式返回 ''' sql = 'select * from teacher;' res = cursor.execute(sql) # print(res) # execute返回的是你当前sql语句所影响的行数 该返回值一般不用 # 获取命令执行的查询结果 # print(cursor.fetchone()) # 只拿一条 # print(cursor.fetchall()) # 拿所有 # print(cursor.fetchmany(2)) # 可以指定拿几条 print(cursor.fetchone()) print(cursor.fetchone()) # 读取数据类似于文件光标的移动 # cursor.scroll(1,'relative') # 相对于光标所在的位置继续往后移动一位 cursor.scroll(1,'absolute') # 相对于数据的开头往后继续移动一位 print(cursor.fetchall())
sql注入
""" 利用一些语法的特性 书写一些特点的语句实现固定的语法 MySQL利用的是MySQL的注释语法 日常生活中很多软件在注册的时候都不能含有特殊符号 因为怕你构造出特定的语句侵入数据库,不安全 """ # 敏感的数据不要自己做拼接 ,交给execute帮你拼接即可 # 结合数据库完成一个用户的登陆功能 import pymysql conn = pymysql.connect( host='127.0.0.1', port=3306, user = 'root', password='123456', database='day48', # 一定要指定一个库 charset='utf8' # 编码千万不要写 ) # 连接数据库 cursor= conn.cursor(cursor=pymysql.cursors.DictCursor) # 产生一个游标对象(就是用来帮你执行命令的) username = input('username>>>: ').strip() password = input('password>>>: ').strip() sql = 'select * from user where name=%s and password=%s' # 不要手动拼接数据 先用%s占位,之后将需要拼接的数据直接交给execute方法即可 print(sql) rows = cursor.execute(sql,(username,password)) # 自动识别sql里面的%s,用后面元组里面的数据进行替换 if rows: print('登陆成功') print(cursor.fetchall()) else: print('登陆失败')
针对增删改 pymysql需要二次确认才能真正的操作数据
import pymysql conn = pymysql.connect( host='127.0.0.1', port=3306, user = 'root', password='123456', db='day48', charset='utf8', autocommit=True # 设置自动提交 ) cursor = conn.cursor(pymysql.cursors.DictCursor) # 增 sql = 'insert into user(name,password) values(%s,%s)' # rows = cursor.execute(sql,('zhzhang',123)) rows = cursor.executemany(sql,[('zhzhang',123),('tom',456)]) # 添加多条数据 # print(rows) # conn.commit() # 确认 # 修改 # sql = 'update user set name="egonSB" where id=1' # rows=cursor.execute(sql) # print(rows) # conn.commit() # 确认 # 删除 # sql = 'delete from user where id=11' # rows = cursor.execute(sql) # print(rows) # conn.commit() # 确认 # 查 sql = 'select * from user ' cursor.execute(sql) print(cursor.fetchall()) ''' 增删改查中 删改增它们的操作涉及到数据的修改 需要二次确认 '''
# 针对增删改 pymysql需要二次确认才能真正的操作数据 import pymysql conn = pymysql.connect( host='127.0.0.1', port=3306, user = 'root', password='123456', db='day48', charset='utf8', autocommit=True # 设置自动提交 ) cursor = conn.cursor(pymysql.cursors.DictCursor) # 增 sql = 'insert into user(name,password) values(%s,%s)' # rows = cursor.execute(sql,('zhzhang',123)) rows = cursor.executemany(sql,[('zhzhang',123),('tom',456)]) # 添加多条数据 # print(rows) # conn.commit() # 确认 # 修改 # sql = 'update user set name="egonSB" where id=1' # rows=cursor.execute(sql) # print(rows) # conn.commit() # 确认 # 删除 # sql = 'delete from user where id=11' # rows = cursor.execute(sql) # print(rows) # conn.commit() # 确认 # 查 sql = 'select * from user ' cursor.execute(sql) print(cursor.fetchall()) ''' 增删改查中 删改增它们的操作涉及到数据的修改 需要二次确认 ''' # 还可以一次性插入N多条数据 rows = cursor.executemany(sql,[('zhzhang',123),('tom',456)]) # 添加多条数据