zoukankan      html  css  js  c++  java
  • python操作mysql

    python操作MySQL

    #首先要导入模块pymysql
    import pymysql
    
    #然后建立连接通道
    conn = pymysql.connect(
        host = '127.0.0.1',
        port = 3306,
        user = 'root',
        password = '123',
        database = 'day38',
        charset = 'utf8'  # 编码千万不要加- 如果写成了utf-8会直接报错
    )
    
    #制作一个游标对象
    cursor = conn.cursor(pymysql.cursors.DictCursor)  # 产生一个游标对象  以字典的形式返回查询出来的数据 键是表的字段  值是表的字段对应的信息
    
    #写入sql语句
    sql = 'select * from teacher'
    
    #执行sql语句
    cursor.execute(sql)  # 执行传入的sql语句
    # print(res)  # res是执行语句返回的数据条数
    
    #获取结果
    print(cursor.fetchone())  # 只获取一条数据
    print(cursor.fetchone())  # 只获取一条数据
    print(cursor.fetchone())  # 只获取一条数据
    # cursor.scroll(2,'absolute')  # 控制光标移动   absolute相对于其实位置 往后移动几位
    cursor.scroll(1,'relative')  # relative相对于当前位置 往后移动几位
    print(cursor.fetchall())  # 获取所有的数据  返回的结果是一个列表

    sql的注入问题

    import pymysql
    
    conn = pymysql.connect(
        host = '127.0.0.1',
        port = 3306,
        user = 'root',
        password = '123',
        database = 'day38',
        charset = 'utf8',  # 编码千万不要加- 如果写成了utf-8会直接报错
        autocommit = True  # 这个参数配置完成后  增删改操作都不需要在手动加conn.commit了
    )
    cursor = conn.cursor(pymysql.cursors.DictCursor)  # 产生一个游标对象  以字典的形式返回查询出来的数据 键是表的字段  值是表的字段对应的信息
    """
    # sql = 'insert into user(name,password) values("jerry","666")'  # 插入一条name为jerry,password为666的数据
    # sql = 'update user set name = "jasonhs" where id = 1'   # 将id为1的字段的那么改为jasonhs
    #sql = 'delete from user where id = 6'  # 删除id为6的数据
    #cursor.execute(sql)
    """
    增删改操作 都必须加一句
    conn.commit()操作
    """
    # conn.commit()
    # username = input('username>>>:')
    # password = input('password>>>:')
    # sql = "select * from user where name =%s and password = %s"
    # print(sql)
    # res = cursor.execute(sql,(username,password))  # 能够帮你自动过滤特殊符号 避免sql注入的问题
    # # execute 能够自动识别sql语句中的%s 帮你做替换
    # if res:
    #     print(cursor.fetchall())
    # else:
    #     print('用户名或密码错误')
    """
    sql注入 就是利用注释等具有特殊意义的符号 来完成一些骚操作
    
    后续写sql语句  不要手动拼接关键性的数据
    而是让excute帮你去做拼接
    """
  • 相关阅读:
    tyvj 1031 热浪 最短路
    【bzoj2005】 [Noi2010]能量采集 数学结论(gcd)
    hdu 1394 Minimum Inversion Number 逆序数/树状数组
    HDU 1698 just a hook 线段树,区间定值,求和
    ZeptoLab Code Rush 2015 C. Om Nom and Candies 暴力
    ZeptoLab Code Rush 2015 B. Om Nom and Dark Park DFS
    ZeptoLab Code Rush 2015 A. King of Thieves 暴力
    hdoj 5199 Gunner map
    hdoj 5198 Strange Class 水题
    vijos 1659 河蟹王国 线段树区间加、区间查询最大值
  • 原文地址:https://www.cnblogs.com/wangnanfei/p/11399901.html
Copyright © 2011-2022 走看看