zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    mysql修改时区time_zone
    magento的布局(layouts)、模块(block)、模板(templates)
    唯品会消息网关的架构定位
    Java应用一般架构
    maven打包命令
    端口查看与封杀
    java程序优化
    高并发下竞争的资源
    java中的多线程高并发与负载均衡的用途
    Web负载均衡的几种实现方式
  • 原文地址:https://www.cnblogs.com/liuwei0824/p/7521188.html
Copyright © 2011-2022 走看看