zoukankan      html  css  js  c++  java
  • pymysql

    pymsql是利用Python连接mysql数据库的库

    Python3上有很好的支持, 同时在Python2中也可以使用

    1 连接数据库

    conn = pymysql.connect(host='127.0.0.1', user='root', password='root', database='practise')
    

      使用connect()函数可以创建一个连接对象

      需要传入的参数包括

        host: 数据库的IP地址

        user: 登录数据库的用户名

        password: 登录数据库的密码

        database: 使用数据库名

        charset: 设置字符集

    2 创建游标

      有了数据库的链接对象之后, 就可以对数据库执行一定的操作了

      使用代码来链接数据库一般都需要一个中介, 来具体执行SQL语句, 一般是cursor(游标)

      创建游标对象

    cursor = conn.cursor()
    

      在cursor()函数中可以传入参数来设置, 查询的结果显示的结构, 默认为null, 显示的结构为:

      

        整个是一个元组, 查询得到的一个记录也是一个元组对象

      一般地, 传入参数

    cursor = conn.cursor(pymysql.cursors.DictCursor)
    

      得到的显示结果为:

      

        整个是一个列表, 一个记录是一个字典, 键是列名

    3 执行SQL语句

      创建好游标对象之后, 就可以使用游标对象来执行一些SQL语句

      首先是生成SQL语句, 一般地, 为了数据库安全, 一般不要自己拼接SQL语句

      正确的拼接SQL的方式是将传入的参数放到游标执行SQL语句的函数中

    sql = "select * from userinfo where username=%s and password=%s"
    cursor.execute(sql,user,pwd)
    

      注意:

        在原有SQL语句中使用%s做占位符

        使用execute()函数来执行SQL语句

        可以将传入的参数封装成列表, 元组, 字典(此时需要在占位符上加上标记如: %(user)s 来作为键)

        如果需要执行多行SQL语句可以使用executemany()

    sql = "insert into userinfo(username,password) values(%s,%s)"
    cursor.executemany(sql, [('egon', '12'), ('wusir', '123')])
    

        执行SQL语句之后可以有返回值, 这个返回值是一个整数值, 表示受影响的函数, 如果是查询语句, 得到的就是结果的行数

        执行修改数据库的操作, 需要提交事务来生效

    conn.commit()

    4 获得执行结果

      可以通过fetchone(), fetchmany(), fecchall()来得到执行的结果

    result = cursor.fetchone()
    

      其中, fetchone得到的是一条数据, fetchmany可以传入一个数值, 表示取的多少行, fechall表示取得查询所有结果

      一般的, 不使用fetchmany, 要想使用少数部分的值, 应该在SQL中做一定的查询限制(limit), 这样能够保证内存不被查询得到的大数据撑爆

      在取数据的时候, 类似文件的光标性质, 得到一行光标移动到下一行, 如果先执行fetchall, 那个在fertch得到的结果就是空了

      可以设置光标的移动

    cursor.scroll(1,mode='relative')  # 相对当前位置移动
    cursor.scroll(2,mode='absolute') # 相对绝对位置移动
    

    5 得到最后行ID

      有的时候, 我们插入数据的时候是不设置该数据的ID的, 但是我们还需要获得对该ID当做数据插入到另一个表的时候

      如有文章表和文章媒体表

      这是就需要或的最后插入的数据的时候的ID 

    cursor.execute(sql)
    print(cursor.lastrowid)
    

    6 关闭

      先关闭游标, 在关闭链接  

    cursor.close()
    conn.close()
    

     

  • 相关阅读:
    第03组 Alpha冲刺(3/4)
    第03组 Alpha冲刺(2/4)
    第03组 Alpha冲刺(1/4)
    课程总结
    第十四周学习总结&实验报告
    第十三周课程总结
    第十二周学习总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
  • 原文地址:https://www.cnblogs.com/weihuchao/p/6964582.html
Copyright © 2011-2022 走看看