• PyMySQL模块


      PyMySQLPython操作数据库的模块,在Python3.x版本中用于连接MySQL服务器,即作为Python操作MySQL数据库对象的接口。

    安装PyMySQL

      pip3 install PyMySQL

    导入PyMySQL

      import pymysql

    连接数据库

      格式:conn = pymysql.connect(host=' ', port=' ', user=' ', passwd=' ', db=' ', charset=' ');

        hostMySQL服务器的IP地址。

        port服务器端口号,默认为3306。如果省略不写,则为默认值。

        user登陆数据库的用户名。

        passwd登陆密码。

        db要连接的数据库。

        charset设置编码。

      连接我的数据库实例:conn = pymysql.connect(host='localhost', user='root', passwd='root0605', db='mydemo', charset='utf8');

    操作数据库

      创建了数据库连接实例对象(上面的conn)后,可以进行数据库的操作。通过实例对象操作数据库的方法很多,可通过help()具体查看。以下为较常用的方法。

      commit():提交保存当前的数据。

      rollback():回滚取消当前的操作。

      cursor():创建连接的游标对象,通过游标执行SQL语句。

      close():关闭数据库连接。

      Python是通过游标执行SQL语句的,建立连接后,要利用对象得到游标对象。

        cur = conn.cursor()

      利用游标对象操作数据库的方法很多,可使用help()查看具体方法,以下是常用的游标方法。

      execute():执行一条SQL语句,可以带参数。

      executemany(query, seq):对序列seq中的每个参数执行SQL语句。

      fetchone():返回一条查询结果。

      fetchall():返回所有查询结果。

      fetchmany(size):返回size条结果。

      nextset():移动到下一个结果。

      scroll(value, mode='relative'):移动游标到指定行,如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一行移动value条。

      close():关闭游标,之后游标不可用。

     

    操作数据库实例:

     

    # 连接数据库:
    >>> conn = pymysql.connect(host='localhost', port=3306, user='root',                 passwd='root0605', db='mydemo', charset='utf8')
    # 创建游标对象:
    >>> cur = conn.cursor()
    # 执行数据插入:
    >>> sql = "insert into stu(id, name) values(2, '李四')"    # 插入一条数据
    >>> cur.execute(sql)
    1
    >>> cur.execute("insert into stu values(3, '王舞')")    # 直接插入一条数据
    1
    >>> cur.execute("insert into stu(id, name) values(%s, %s)", (4, '阳阳'))     # 通过参数形式插入
    >>> conn.commit()    # 最后一定要执行数据提交
    >>> cur.executemany("insert into stu(id, name) values(%s, %s)", ((5, '曲奇'), (6, '文物'), (7, '谔谔'), (8, '冉冉'), (9, '天天'), (10, '噢噢')))    # executemany方法插入多条数据
    6
    >>> conn.commit()
    # 执行数据删除:
    >>> cur.execute("delete from stu where id=10")
    1
    >>> conn.commit()
    # 执行数据修改:
    >>> cur.execute("update stu set name='张三2' where id=1")
    1
    >>> conn.commit()
    # 执行数据查询:
    >>> cur.execute("select * from stu")
    9    # 这表示从stu表中查出来9条记录

      通过上面的查询方式,只会查出表中记录的数据条数,要显示具体的数据,则得用到游标对象的fetchall()fetchmany(size=None)fetchone()scroll(value, mode='relative')等方法。

     

    >>> lines = cur.fetchall()    # 使用fetchall()方法取出所有数据,只能取一次
    >>> for line in lines:
    ...     print(line)
    ... 
    (1, '张三2')
    (2, '李四')
    (3, '王舞')
    (4, '阳阳')
    (5, '曲奇')
    (6, '文物')
    (7, '谔谔')
    (8, '冉冉')
    (9, '天天')
    >>> cur.execute("select * from stu")
    9
    >>> cur.fetchone()    # 一条一条的取出数据
    (1, '张三2')
    >>> cur.fetchone()    # 类似于读取文件的方式
    (2, '李四')

     

      用cur.execute()从数据库查询出来的数据,保存在cur对象空间中,需要用fetchall()、fetchmany(size=None)、fetchone()、scroll(value, mode='relative')等方法去读取查询出来的数据。返回值是一个元组对象。

      通过以上的方法读取数据时,游标对象cur会移动,所以数据会一条一条的读出,读取完成后,游标移动到数据的尾部。类似于文件的读取。

    >>> cur.fetchall()    # 读取完剩下的数据
    ((4, '阳阳'), (5, '曲奇'), (6, '文物'), (7, '谔谔'), (8, '冉冉'), (9, '天天'))
    >>> cur.fetchall()    # 继续读取,返回空元组
    ()
    # 通过scroll()方法能够移动游标的位置,默认一定方式是相对移动,即相对当前的位置像前后向后移动游标位置。
    >>> cur.scroll(-7)    # 从当前位置向后移动
    >>> cur.fetchone()
    (3, '王舞')
    >>> cur.scroll(3)    # 从当前位置向前移动
    >>> cur.fetchone()
    (7, '谔谔')
    # 除了相对位置的移动,还有绝对位置的移动,给scroll()方法传入参数absolute,即相对于位置0的移动。
    >>> cur.scroll(3, 'absolute')    # 绝对位置移动
    >>> cur.fetchone()
    (4, '阳阳')
    fetchmany(size=None)方法实现从当前位置读取指定条数的数据。
    >>> cur.fetchmany(3)    # 从当前游标位置读取下面的三条数据
    ((5, '曲奇'), (6, '文物'), (7, '谔谔'))

      rowcount:是一个只读属性,返回执行execute()方法后影响的行数。
      Python在连接对象的游标方法中提供了一个参数,可以实现读取到的数据变成字典的形式。

    >>> cur = conn.cursor(pymysql.cursors.DictCursor)    # 创建游标对象时指定字典参数
    >>> cur.execute("select * from stu limit 5")
    5
    >>> cur.fetchall()
    [{'id': 1, 'name': '张三2'}, {'id': 2, 'name': '李四'}, {'id': 3, 'name': '王舞'}, {'id': 4, 'name': '阳阳'}, {'id': 5, 'name': '曲奇'}]    # 数据显示成字典格式

    关闭游标对象和数据库连接对象

      >>>cur.close()

      >>>conn.close()

     

     

  • 相关阅读:
    当在服务器或者云端发布程序的时候,注意事项
    Oracle 在使用pivot时,注意事项
    当采用datagrid自带的方法加载列表时,当在后台遇到错误时,如何在前台提示错误
    Oracle 在分组的同时,取每个分组的前几条PARTITION BY
    带有res资源文件的项目 需要导成jar包 供别人使用的解决方法
    java乱码问题
    网络通信框架Volley使用详细说明
    深刻的理解Fragment生命周期 都在做什么,fragment生命周期
    ScrollView中嵌套ListView时,listview高度显示的问题
    关于一个app中数据库的问题
  • 原文地址:https://www.cnblogs.com/wgbo/p/10112237.html
Copyright © 2020-2023  润新知