zoukankan      html  css  js  c++  java
  • mysql入门(六)

    pymysql

    pymysql是一个python编写的mysql驱动程序,让我们的python语言可以操作mysql数据库。

    pymysql是第三方库,不是python中自带的,需要下载安装:

    pip install pymysql

    1.pymysql的使用步骤

    '''
    1.需要引入pymysql   import pymysql
    2.创建连接  pymysql.connect()
    3.创建游标  pymysql.connect().cursor()
    4.执行sql语句
    5.获取结果
    6.关闭游标
    7.断开链接
    '''

    游标

    游动的标签;作用:可以帮我们实现一行一行的取数据。

    2.pymysql的操作

    连接数据库

     1 import pymysql
     2  3 # 连接mysql服务器
     4 conn = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='firstdb',charset='utf8')
     5  6 # 创建游标
     7 cursor = conn.cursor()
     8  9 # 执行sql语句,sql语句对于python来说就是一条字符串
    10 effect_row = cursor.execute("select * from stuinfo")
    11 12 # 在结果中取出(一条数据)
    13 row = cursor.fetchone()
    14 15 # 输出结果
    16 print(row)
    17 18 # 关闭游标
    19 cursor.close()
    20 21 # 断开连接
    22 conn.close()
    23 24 # 打印输出结果(1, '小马', '男', 20, '杭州', 1)

    获取查询

    import pymysql
    
    # 连接mysql服务器
    conn = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='firstdb',charset='utf8')
    
    # 创建游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    # 执行sql语句,sql语句对于python来说就是一条字符串
    effect_row = cursor.execute("select * from stuinfo")
    
    #在结果中取出(所有数据)
    result = cursor.fetchall()
    
    for i in result:
        for k,v in i.items():
            print(k,':',v)
    
    # 输出结果
    print(result)
    
    # 关闭游标
    cursor.close()
    
    # 断开连接
    conn.close()

    插入操作(一次插入一条)

    import pymysql
    
    # 连接mysql服务器
    conn = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='firstdb',charset='utf8')
    
    # 创建游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    # 执行sql语句,sql语句对于python来说就是一条字符串
    effect_row = cursor.execute("insert into `stuinfo` set `sname`='小李',sex=2,age=55,city='香港',seat=100")
    
    # 在pymysql中事务是默认开启的,是连接对象
    conn.commit()
    
    # 在游标中获取最后插入的id
    new_id = cursor.lastrowid
    print(new_id)
    
    # 关闭游标
    cursor.close()
    
    #断开连接
    conn.close()

    一次插入多条

    import pymysql
    
    # 连接mysql服务器
    conn = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='firstdb',charset='utf8')
    
    # 创建游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    # 执行sql语句,一次插入多条,(方法一)
    effect_row = cursor.execute("insert into `stuinfo` values(null,'A',1,11,'A',1),(null,'A',1,11,'A',1),(null,'A',1,11,'A',1)")
    
    '''
    # executemany 可以写多个参数,多个参数用list包裹,里面是tuple,一次插入多条(方法二)
    effect_row = cursor.executemany("insert into stuinfo values(%s,%s,%s,%s,%s,%s)",[(None,'B',2,22,'B',2),(None,'B',2,22,'B',2)])
    '''
    
    # 在pymysql中事务是默认开启的,是连接对象
    conn.commit()
    
    # 返回受影响的记录数
    print(effect_row)
    
    # 关闭游标
    cursor.close()
    
    # 断开连接
    conn.close()

    调用存储过程

    import pymysql
    
    # 连接mysql服务器
    conn = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='py1809',charset='utf8')
    
    # 创建游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    # 调用存储过程
    cursor.callproc('pro_3',args=(10,))
    
    # 打印结果
    result = cursor.fetchall()
    print(result)
    
    # 关闭游标
    cursor.close()
    
    #断开连接
    conn.close()

    为什么需要使用存储过程?
    一个项目是一个Django,假如sql语句写在了django中,那么sql语句是没有通用性的;使用存储过程是为了保存较为复杂的sql语句,并让该语句有多项目通用性。

    【补充】:字符拼接的带来安全影响 sql注入。

    防止sql注入,不需要我们用正则匹配,execute自带防止sql注入功能。

  • 相关阅读:
    SAP BW维护项目中的常见问题 沧海
    从印度英语想到creole 沧海
    侃State模式
    住在“天堂”的代价一个工薪阶层买房的感受
    家庭财务总管软件设计
    侃观察者模式(Observer)
    软件设计起步:画UML类图
    一个提醒软件---好朋友
    学习设计模式的一些心得
    一次偶然结对编程的感受
  • 原文地址:https://www.cnblogs.com/bonheur/p/12589415.html
Copyright © 2011-2022 走看看