python高级之操作数据库
python高级之操作数据库
本节内容
- pymysql介绍及安装
- 使用pymysql执行sql
- 获取新建数据自增ID
- 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()