python高级之操作数据库

python高级之操作数据库

本节内容

  1. pymysql介绍及安装
  2. 使用pymysql执行sql
  3. 获取新建数据自增ID
  4. fetch数据类型设置

1.pymysql介绍及安装

在python2中连接数据库使可以使用mysqldb模块,为什么在python3中使用pymysql模块呢?因为在python2中mysqldb和pymysql都可以操作数据库,但是当python升级到3以后,pymysql模块支持python3了,但是mysqldb模块目前还不支持python3,所以用python3的小伙伴们还是先用pymysql吧。pymysql和mysqldb的使用方法基本相同。

安装pymysql可以使用pip安装:

 1 pip3 install pymysql 

安装完成之后在python解释器中执行import pymysql如果不报错说明安装成功了。

2.使用pymysql执行sql

 1 import pymysql  # 导入模块
 2 
 3 conn=pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="123456",db="sql_example",charset="utf8")
 4 # 注意,这里传入的参数必须是关键字参数,不能省略关键字,否则将连接不上数据库
 5 # conn.autocommit()  # 如果设置了这个属性,则会自动commit sql语句,而不需要手动commit
 6 cursor=conn.cursor()  # 创建游标
 7 # cursor.execute("insert into class(caption) values('全栈二班')")
 8 
 9 r=cursor.execute("select * from class")  # 执行查询语句并返回查询的数据行数
10 print(r)  # 打印行数
11 # print(cursor.fetchall())  # 打印返回的所有数据,数据结构是元祖套元祖((),()),里面的一个元祖就是一行数据
12 # print(cursor.fetchmany(num))  # 打印返回的num条数据,数据结构是元祖套元祖((),()),里面的一个元祖就是一行数据
13 print(cursor.fetchone())   # 打印返回的数据中第一行数据,结构是只有一个元祖
14 cursor.scrroll()  # 修改游标的位置
15 
16 conn.commit()  # 手动提交要执行的sql
17 cursor.close()  # 关闭游标
18 conn.close()  # 关闭连接

注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:

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

3.获取新建数据自增ID

 1 conn = pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="123456",db="sql_example",charset="utf8")
 2 cursor = conn.cursor()
 3 cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
 4 ## executemany可以执行多条插入语句,后面接的数据需要是一个可迭代的对象,一般是列表里面套元祖或列表
 5 conn.commit()
 6 cursor.close()
 7 conn.close()
 8 
 9 # 获取最新自增ID
10 new_id = cursor.lastrowid  # 通过cursor.lastrowid可以获取获取最新行的自增ID

表里面只能有一个字段设置为自增ID。。。

4.fetch数据类型设置

关于默认获取的数据是元祖类型,如果想要获得字典类型的数据,即:

 1 conn = pymysql.connect(host="192.168.12.120",port=3306,user="root",passwd="123456",db="sql_example",charset="utf8")
 2 
 3 # 游标设置为字典类型
 4 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
 5 r = cursor.execute("call p1()")
 6 
 7 result = cursor.fetchone()
 8 
 9 conn.commit()
10 cursor.close()
11 conn.close()
原文地址:https://www.cnblogs.com/huxianglin/p/5997334.html