• python之pymysql模块


    一、pymysql模块:链接、执行mysql

      安装模块:pip3 install pymysql

    # 语法:
    # pymysql操作数据库:
            
    1. conn = pymysql.connect # 链接数据库
    2. cursor = con.cursor()
    3. cursor.execute(sql语句)
    
    # 查询
    4. cursor.fetchone() # 取一行数据
    5. cursor.fetchmany(5) # 取指定几行数据
    6. cursor.fetchall() #  取到所有的结果集
                
    # 增加            
    # 增加一条数据:
    cursor.execute(insert 语句, 传入的参数)
    # 增加多条数据:
    cursor.executemany(insert 语句, 传入的多个参数)
    conn.commit()                
                    
    # 删除
    # 删除一条数据:
    cursor.execute(delete语句, 传入的参数)
    # 删除多条数据:
    cursor.executemany(delete语句, 传入的多个参数)
    conn.commit()
                
    # 修改
    # 修改一条数据:
    cursor.execute(update语句, 传入的参数)
    #修改多条数据:
    cursor.executemany(update语句,传入的多个参数)
    conn.commit()
    # 查询
    import pymysql
    
    user=input('用户名: ').strip()
    password=input('密码: ').strip()
    
    #链接
    conn=pymysql.connect(host='localhost',user='root',password='root',database='user',charset='utf8')
    #游标
    cursor=conn.cursor() #执行完毕返回的结果集默认以元组显示
    #cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    
    #执行sql语句
    sql='select * from user where username="%s" and pwd="%s"' %(user,password) #注意%s需要加引号,但是像这样写会导致sql注入的情况
    print(sql)
    res=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目
    print(res) # 1
    
    cursor.close()
    conn.close()
    
    if res:
        print('登录成功')
    else:
        print('登录失败')

    execute()之sql注入

    # sql注入
    sql = "select * from user where username = '%s' and pwd = '%s'" % (username, pwd)
    res = cursor.execute(sql)
    # 采用上面这种方式,很容易被进行sql注入,影响数据安全 #1、sql注入之:用户存在,绕过密码 simon' -- 任意字符 #2、sql注入之:用户不存在,绕过用户与密码 xxx' or 1=1 -- 任意字符 # 解决方法 # 原来是我们对sql进行字符串拼接 # sql="select * from user where username='%s' and pwd='%s'" %(user,password) # print(sql) # res=cursor.execute(sql) #改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了) sql="select * from user where username=%s and pwd=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上 res=cursor.execute(sql,(user,password)) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。

    数据表增加一条或多条数据:

    import pymysql
    
    ### 链接mysql数据库
    conn = pymysql.connect(host='localhost', user='root', password='root', database='user')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    sql = "insert into userinfo (name, email) values  (%s, %s)"
    ### 增加一条数据
    # cursor.execute(sql, ('zekai6', 'yui')) # 执行sql语句,返回sql影响成功的行数
    
    ### 增加多条数据
    data = []
    for i in range(3000000):
        data.append(('root'+str(i), 'root'+str(i)+'@qq.com'))
    
    cursor.executemany(sql, data)
    ### 提交后才发现表中插入记录成功
    conn.commit()
    
    cursor.close()
    conn.close()

    删除数据:

    import pymysql
    
    ### 链接mysql数据库
    conn = pymysql.connect(host='localhost', user='root', password='root', database='user')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    sql = "delete from  user where id=%s"
    
    ### 删除一条数据
    # cursor.execute(sql, (11))
    try:
        cursor.executemany(sql, (12,13,14))
        ### 提交
        conn.commit()
    except Exception as e:
        conn.rollback()
    
    # print(cursor.lastrowid)
    
    cursor.close()
    conn.close()

    获取插入的最后一条数据的自增ID

    import pymysql
    conn=pymysql.connect(host='localhost',user='root',password='root',database='user')
    cursor=conn.cursor()
    
    sql='insert into userinfo(username,pwd) values("xxx","123");'
    rows=cursor.execute(sql)
    print(cursor.lastrowid) #在插入语句后查看
    
    conn.commit()
    
    cursor.close()
    conn.close()
  • 相关阅读:
    使用zoom.js 给博客园的图片添加点击图片放大功能
    html上传多图并预览
    html页面选择图片上传时实现图片预览功能
    html实现点击图片放大功能
    layui常用功能
    七牛云上传与删除图片
    寻找七牛云存储配置参数
    TP5之发送邮件
    TP5之一次选择多张图片并预览
    TP5之页面跳转样式
  • 原文地址:https://www.cnblogs.com/yangmeichong/p/11088526.html
Copyright © 2020-2023  润新知