python-day47--pymysql模块

一、安装导入

#安装
pip3 install pymysql

二、使用

1 .基本使用
import pymysql
# 链接,拿到游标
conn=pymysql.connect(host='local',user='root',password='963.',database='day47',charset='utf8')
cursor=conn.cursor()       #拿到游标,即mysql>

# 执行sql
sql='select * from user where id>1'
rows=cursor.execute(sql)   #拿到的是受影响的行数---记录数
print('%s rows in set (0.00 sec)' %rows)

cursor.close()
conn.close()




2 .小练习:
user=input('-->:').strip()
pwd=input('-->:').strip()

# 链接,拿到游标
conn=pymysql.connect(host='localhost',user='root',password='963.',database='day47')
cursor=conn.cursor()       #拿到游标,即mysql>

# 执行sql
sql='select * from user where name="%s" and password="%s";'%(user,pwd)
rows=cursor.execute(sql)   #拿到的是受影响的行数---记录数
if rows:
    print('welcome')
else:
    print('error')

cursor.close()
conn.close()
3:sql注入
注意:符号--会注释掉它之后的sql
#1、sql注入之:用户存在,绕过密码 egon" -- 任意字符 #2、sql注入之:用户不存在,绕过用户与密码 xxx" or 1=1 -- 任意字符 import pymysql user=input('用户名>>: ').strip() pwd=input('密码>>: ').strip() conn=pymysql.connect(host='localhost',user='root',password='',database='day47') cursor=conn.cursor() sql='select * from user where user="%s" and password="%s";' %(user,pwd) print(sql) rows=cursor.execute(sql) cursor.close() conn.close() if rows: print('登录成功') else: print('登录失败')

绕过密码登录:

 绕过用户和密码登录:

 

4.解决sql注入

import pymysql
user=input('用户名>>: ').strip()
pwd=input('密码>>: ').strip()
conn=pymysql.connect(host='localhost',user='root',password='',database='day47')
cursor=conn.cursor()

sql='select * from user where user=%s and password=%s;'
rows=cursor.execute(sql,[user,pwd])     #可以用列表和元组的形式
print(rows)
cursor.close()
conn.close()
if rows:
    print('登录成功')
else:
    print('登录失败')

三、增删改查

1 增删改
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='',database='day47',charset='utf8')
cursor=conn.cursor()


sql='insert into user(user,password) values(%s,%s);'
rows=cursor.execute(sql,('alex','123'))                  #插入一条记录
rows=cursor.executemany(sql,[('yuanhao','123'),('laowu','123'),('kgf','12323')])   #插入多条记录
print('%s row in set (0.00 sec)' %rows)
conn.commit()     #提交给数据库

cursor.close()
conn.close()
2 查:fetchone,fetchmany,fetchall

import pymysql
conn=pymysql.connect(host='localhost',user='root',password='',database='day47',charset='utf8')
cursor=conn.cursor()


sql='select * from user;'
rows=cursor.execute(sql)
查单条
res1=cursor.fetchone()
res2=cursor.fetchone()
res3=cursor.fetchone()    #查出结果是元组的形式
print(res1[0])
print(res2)
print(res3)

结果:
1
(2, 'alex', 456)
None


查多条
print(cursor.fetchmany(3))
print(cursor.fetchone())

结果:
((1, 'egon', 123), (2, 'alex', 456))
None




查所有
print(cursor.fetchall())
print(cursor.fetchone())

结果:
((1, 'egon', 123), (2, 'alex', 456))
None




光标的移动  -- 绝对移动
print(cursor.fetchall())
cursor.scroll(0,mode='absolute')
print(cursor.fetchone())
cursor.scroll(1,mode='absolute')
print(cursor.fetchone())

结果:
((1, 'egon', 123), (2, 'alex', 456))
(1, 'egon', 123)
(2, 'alex', 456)


cursor.scroll(1,mode='relative')   --相对移动
print(cursor.fetchone())

结果:
(2, 'alex', 456)
None
3 获取插入的最后一条数据的自增ID
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='963.',database='day47',charset='utf8')
cursor=conn.cursor()

sql='insert into user(name,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)     #结果   5

cursor.close()
conn.close()

 

posted @ 2017-09-14 16:04  Cool·  阅读(222)  评论(0编辑  收藏  举报