PyMySQL模块

摘要:
charset='');charset='utf8');如果mode='relative',如果mode='absolute',conn=pymysql。connect(host='localhost',user='root',passwd='root0605',charset='tf8')#创建光标对象:cur。执行(sql)1>'Wang Wu')“)#直接插入一段数据1>

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

 

 

免责声明:文章转载自《PyMySQL模块》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于WEB的URL安全测试计算机图形学中的空间坐标系下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python——常用模块

模块,就是一堆实现了某个功能的代码的集合。 一、time & datetime time.time() 返回当前时间的时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。 1473344512.2949986 time.sleep(秒数) 使用该方法可以让程序休眠n秒,n可以是小数。 time.clock() 计算CPU...

SqlServer导入mdf、ldf文件

方法一 连接数据库 右键某一个数据库,新建查询,输入如下代码后运行 EXEC sp_attach_db @dbname = '你的数据库名', @filename1 = 'mdf文件路径(包缀名)', @filename2 = 'Ldf文件路径(包缀名)' 注: 如果导入不成功,则需要修改mdf,ldf文件的权限。...

NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构

本文摘自《用Python做科学计算》,版权归原作者所有。 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构 一、多维数组的存取 多维数组的存取和一维数组类似,因为多维数组有多个轴,因此它的下标需要用多个值来表示,NumPy采用组元(tuple)作为数组...

EF结合SqlBulkCopy实现高效的批量数据插入 |EF插件EntityFramework.Extended实现批量更新和删除

原文链接:http://blog.csdn.net/fanbin168/article/details/51485969   批量插入 (17597条数据批量插入耗时1.7秒)   using System;   using System.Collections.Generic;   using System.Linq;   usi...

html5基础知识

html5<!DOCTYPE>标签html5只有一种,即:<!DOCTYPE HTML>示例:<!DOCTYPE html><html><head><title>html5_title</title></head><body>html5内容</...

Zend Framework 教程:简单的注册和登录验证

注:本系列教程都在zend studio 6.1.1上开发完成,amp环境全部自己配置,以避免使用类似xampp\wamp等继承环境带来的未知问题。 1、首先创建存储用户的表   2、创建对应于数据库表的数据库访问模型,即Zend Table 在zend studio的工程上右键选择New Zend Framework Item,选择Zend Table,...