zoukankan      html  css  js  c++  java
  • 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()

     

     

  • 相关阅读:
    iframe页面调用父窗口JS函数
    href超级链接里加上javascript代码的,还有target问题
    IE上的兼容性调整问题烦死啦
    如何在java web工程下建立存储property文件的文件夹,让Java程序直接读取
    当是class com.cosl.po.Pc$$EnhancerByCGLIB$$38c58f03时,反射属性都他妈不好用了
    好奇怪啊,如果邮箱JSON格式的字符串不是在一行上,那么转为JSON将转换不成功,估计是数据格式有问题吧
    flexpaper上传带中文名字的文档,在页面显示若出现404错误时,请在server.xml文件中进行编码utf-8
    loger4j时间一长,就不向数据库里写日志啦,然而重新启动工程后就可以再次向数据库写日志,好奇怪
    直接在filter过滤器代码里加org.apache.struts2.ServletActionContext.getRequest()会出现空指针情况
    ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器。用springframework自带的便可
  • 原文地址:https://www.cnblogs.com/wgbo/p/10112237.html
Copyright © 2011-2022 走看看