• 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()

  • 相关阅读:
    BubbleGum96 开箱杂谈与软件资源
    Intel Edision —— 从SSH无法连接到systemd
    Intel Edision —— 开发环境选择一贴通
    Intel Edision —— 上电、基本设置与系统初探
    使用RPi-Monitor监控、统计Guitar的运行状态
    吃我一记咸鱼突刺——使用板载RTC定时开机
    Intel Edison —— 控制GPIO接口,网页显示传感器数值
    docker on UP Board
    Android源码分析--CircleImageView 源码详解
    如何自定义一个优雅的ContentProvider
  • 原文地址:https://www.cnblogs.com/liuwei0824/p/7521188.html
Copyright © 2020-2023  润新知