标签:返回 注入 字符串 获得 很多 ora cal under values
import pymysql user= input(‘用户名:>>‘).strip() pwd= input(‘密码:>>‘).strip() #先链接,拿到游标 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘123456‘, database=‘day47‘,charset=‘utf8‘) cursor=conn.cursor() #拿到游标,即mysql > #执行sql sql=‘select * from user where user="%s" and password="%s";‘%(user,pwd) print(sql) #注意%s需要加双引号 rows = cursor.execute(sql) #拿到受影响的行数 cursor.close() conn.close() if rows: print(‘登录成功‘) else: print(‘登录失败‘)
1、防注入
如上我们采用字符串拼接的形式生成sql语句。但是当存在 -- 时有可能对后面的语句形成干扰。
当面临这种情况时,用execute做字符串拼接
import pymysql user="egon1" pwd= 123 #先链接,拿到游标 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘1234‘,
database=‘ls‘,charset=‘utf8‘) cursor=conn.cursor() #拿到游标,即mysql > sql="select * from std where name=%s and password=%s;" row_count=cursor.execute(sql,[user,pwd]) print(row_count) conn.commit() cursor.close() conn.close() ..............其中()【】都可以使用
当我查找数据时,会返回很多内容,我们需要通过fetchone,fetchmany,fetchall来获得消息
import pymysql user="egon16" pwd= 123 #先链接,拿到游标 conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘1234‘, database=‘ls‘,charset=‘utf8‘) cursor=conn.cursor() sql=‘select * from stu;‘ rows = cursor.execute(sql) #查单条fetchone # res1=cursor.fetchone() # res2=cursor.fetchone() # res3=cursor.fetchone() # print(res1) # print(res2) # print(res3) # print(res3[0]) #查多条fetchmany # print(cursor.fetchmany(3)) # print(cursor.fetchone()) #查所有fetchall # print(cursor.fetchall()) # print(cursor.fetchone()) #-------光标的移动-------- #1.绝对路径:从文件的开头位置算起 # print(cursor.fetchall()) # cursor.scroll(1,mode=‘absolute‘) # print(cursor.fetchone()) # cursor.scroll(3,mode=‘absolute‘) # print(cursor.fetchone()) #2.相对路径: print(cursor.fetchone()) print(cursor.fetchone()) cursor.scroll(2,mode=‘relative‘) #相对于上面的两条向后移两条 print(cursor.fetchone()) print(‘%s row in set (0.00 sec)‘ %rows) cursor.close() conn.close()
------查看表中最后一行的iD import pymysql conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘123456‘, database=‘day47‘,charset=‘utf8‘) cursor=conn.cursor() sql=‘insert into user1(user,password) values(%s,%s);‘ rows=cursor.execute(sql,(‘alex‘,‘123‘)) # rows=cursor.executemany(sql,[(‘yuanhao‘,‘123‘),(‘laowu‘,‘123‘),(‘kgf‘,‘12323‘)]) conn.commit() print(cursor.lastrowid) #查看表中最后一行的iD cursor.close() conn.close()
标签:返回 注入 字符串 获得 很多 ora cal under values
原文地址:https://www.cnblogs.com/ls-2018/p/8976444.html