zoukankan      html  css  js  c++  java
  • 18 12 07 MySQL 与python 的交互

    ---恢复内容开始---

     python 中 关于SQL语句的查询

    from pymysql import *  # 由于只能用了一个MySQL 的包所以全部引进
    
    def main():
        # 创建Connection连接
        conn = connect(host='localhost',port=3306,user='root',password='root',database='jing_dong',charset='utf8')
        # 获得Cursor对象
        cs1 = conn.cursor()
        # 执行select语句,并返回受影响的行数:查询一条数据  execute语句后 用的是SQL语句
        count = cs1.execute('select id,name from goods where id>=4')
        # 打印受影响的行数
        print("查询到%d条数据:" % count)
    
        for i in range(count):
            # 获取查询的结果
            result = cs1.fetchone()
            # 打印查询的结果
            print(result)
            # 获取查询的结果
    
        # 关闭Cursor对象
        cs1.close()
        conn.close()
    
    if __name__ == '__main__':
        main()

    fetch 用来进行取值  有  fecthone  fecthmany  fecthall

    python 中 SQL  运用于增删改

    from pymysql import *
    
    def main():
        # 创建Connection连接
        conn = connect(host='localhost',port=3306,database='jing_dong',user='root',password='root',charset='utf8')
        # 获得Cursor对象
        cs1 = conn.cursor()
        # 执行insert语句,并返回受影响的行数:添加一条数据
        # 增加
        count = cs1.execute('insert into goods_cates(name) values("硬盘")')
        #打印受影响的行数
        print(count)
    
        count = cs1.execute('insert into goods_cates(name) values("光盘")')
        print(count)
    
        # # 更新
        # count = cs1.execute('update goods_cates set name="机械硬盘" where name="硬盘"')
        # # 删除
        # count = cs1.execute('delete from goods_cates where id=6')
    
        # 提交之前的操作,如果之前已经之执行过多次的execute,那么就都进行提交
        conn.commit()
    
        # 关闭Cursor对象
        cs1.close()
        # 关闭Connection对象
        conn.close()
    
    if __name__ == '__main__':
        main()

    防止sql注入的安全问题

    • sql语句的参数化,可以有效防止sql注入
    • 注意:此处不同于python的字符串格式化,全部使用%s占位
    • from pymysql import *
      
      def main():
      
          find_name = input("请输入物品名称:")
      
          # 创建Connection连接
          conn = connect(host='localhost',port=3306,user='root',password='mysql',database='jing_dong',charset='utf8')
          # 获得Cursor对象
          cs1 = conn.cursor()
      
      
          # # 非安全的方式
          # # 输入 " or 1=1 or "   (双引号也要输入)
          # sql = 'select * from goods where name="%s"' % find_name
          # print("""sql===>%s<====""" % sql)
          # # 执行select语句,并返回受影响的行数:查询所有数据
          # count = cs1.execute(sql)
      
          # 安全的方式
          # 构造参数列表
          params = [find_name]
          # 执行select语句,并返回受影响的行数:查询所有数据
          count = cs1.execute('select * from goods where name=%s', params)
          # 注意:
          # 如果要是有多个参数,需要进行参数化
          # 那么params = [数值1, 数值2....],此时sql语句中有多个%s即可 
      
          # 打印受影响的行数
          print(count)
          # 获取查询的结果
          # result = cs1.fetchone()
          result = cs1.fetchall()
          # 打印查询的结果
          print(result)
          # 关闭Cursor对象
          cs1.close()
          # 关闭Connection对象
          conn.close()
      
      if __name__ == '__main__':
          main()

     自己写的很low逼的查询框架   以后或许可以用来修改修改

    //实验四
    #include<iostream>
    #include<string.h>
    using namespace std;
    int main()
    {
      float m,temp=0,sum=0;
         int   n,i;
       float averge=0;
       cout<<"How many  number  do you input?
    ";//询问输入的个数
       cin>>n;
       int   a[n];
       cout<<"input  1  zheng shu
    ";
       cin>>m;
       a[0]=m;
       cout<<"please  input    "<<n-1<<"    numbers
    ";
       for(i=1;i<n;i++)//循环输入整数
       {
           cin>>a[i];
       }
      int  max=a[0],min=a[0];
       for(i=0;i<n;i++)
       {
           if(max<a[i]){max=a[i];}//比较max和各整数的大小
           if(min>a[i]){min=a[i];}
            sum+=a[i];
        }
        averge=sum/n;
       cout<<"the  MAX numbers is :"<<max<<endl;
       cout<<"the  Min numbers is :"<<min<<endl;
    
       cout<<"the  averge is :"<<averge<<endl;
    return 0;   
    }

      

  • 相关阅读:
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    云架构师进阶攻略(3)
    PAT 1059. C语言竞赛
    PAT 1058. 选择题
  • 原文地址:https://www.cnblogs.com/fromlantianwei/p/10081118.html
Copyright © 2011-2022 走看看