zoukankan      html  css  js  c++  java
  • MySQL与Python交互

    拆表

    将分组结果插入另一张表里

    insert into goods_cates (name) select cate_name from goods group by cate_name; # 注意,不用加values

    同步数据表,把一张表字段覆盖到另一张表上

    update goods as g inner join goods_cates as c on g.cate_name = c.name set g.cate_name = c.id;

    改字段的类型 change

    创建外键

    alter table goods add foreign Key (cate_id) references goods_cates(id);

    删掉外键

    alter table goods drop foreign Key 外键名; # 外键名可以通过语句"show create table good;"查询

    from pymysql import *
    
    def main():
        # 创建Connection连接
        connc = connect(host="localhost", port=3306, user="root", password="root", database="python02", charset="utf8")
        # 获得Cursor对象
        csl = connc.cursor() # csl相当于游标,查询结果保存在里面,每执行一次csl.fetchone()会自动指向下一行数据。csl.fetchmany(x),x接受参数;csl.fetchall()返回所有数据,格式为一个元组嵌套另一个元组;# 执行select语句,并返回受影响的行数:查询一条数据  count = csl.execute('SELECT id, name FROM students2 WHERE gender = 2') 
      # 打印受影响的行数
      
    print("查询到%d条数据" % count)

      for i in range(count):
        
    # 获取当前的结果
        result = csl.fetchone()
        
    # 打印查询的结果
        print(result)

      # 关闭Cursor对象
      csl.close()
      connc.close()

    if __name__ == "__main__": main()

     增删改这三个需要修改数据库的地方,在操作完,关闭连接之前,需要加上

    conn.commit()

    撤销刚才的操作,在commit()之前,运行

    conn.rollback()

    防止MySQL的注入

    注意:符号--会注释掉它之后的sql,正确的语法:--后至少有一个任意字符

    根本原理:就根据程序的字符串拼接name='%s',我们输入一个xxx' -- haha,用我们输入的xxx加'在程序中拼接成一个判断条件name='xxx' -- haha'

    最后那一个空格,在一条sql语句中如果遇到select * from t1 where id > 3 -- and name='egon';则--之后的条件被注释掉了
    
    #1、sql注入之:用户存在,绕过密码
    egon' -- 任意字符
    
    #2、sql注入之:用户不存在,绕过用户与密码
    xxx' or 1=1 -- 任意字符
    # 原来是我们对sql进行字符串拼接
    # sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)
    # print(sql)
    # res=cursor.execute(sql)
    
    #改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
    sql="select * from userinfo where name=%s and password=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上
    res=cursor.execute(sql,[user,pwd]) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。
  • 相关阅读:
    【c++算法】移除性算法
    【c++容器】标准库与boost库中一些容器的介绍
    【Marva Collins' Way】第十章
    pc后时代的vs2012
    【行业关注】决策
    .net控件
    Silverlight 全屏显示
    ImageError error #4001 in control 'Xaml1': AG_E_NETWORK_ERROR 异常
    Silverlight跨域,Silverlight在IIS中部署等问题解决之道
    演练:使用 Expression Blend 或代码创建 Silverlight 时钟
  • 原文地址:https://www.cnblogs.com/linyuhong/p/9983049.html
Copyright © 2011-2022 走看看