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()

 

 

posted @ 2018-12-13 09:40  从python开始  阅读(334)  评论(0编辑  收藏  举报