标签:
本节介绍Python对于MySQL的一些操作用法
说明:pymysql与MySQLdb模块的使用基本相同,学会pymysql,使用MySQLdb也就不是问题
pip install PyMySQL
#!/usr/bin/env python # -*- coding: utf-8 -*- # auth : pangguoping import pymysql # 创建连接 conn = pymysql.connect(host=‘192.168.1.103‘, port=3306, user=‘root‘, passwd=‘123456‘, db=‘test‘) # 开启自动提交SQL,如果这里不设置,以后的命令需要执行conn.commit()来提交执行,否则都在内存中 conn.autocommit(True) # 创建游标 cur = conn.cursor() # 执行普通SQL,并返回受影响行数 effect_row = cur.execute("insert into t1 values (1, ‘Boss‘)") print(effect_row) # out:1 # # 执行带占位符的SQL,并返回受影响行数 effect_row = cur.execute("insert into t1 values (2,‘%s‘)" % "xiaodi") print(effect_row) # out:1 # # 执行多行数据的SQL,并返回受影响行数 effect_row = cur.executemany("insert into t1(id,name) values (%s, %s)", [(3, ‘zhubajie‘), (4, ‘sunwukong‘)]) print(effect_row) # out: 2 # 获取最新自增ID,注意:如果该表的列是非自增类型的,则获取到的数值为0 id = cur.lastrowid print(id) # out :4 cur.execute(‘select * from t1‘) # 获取第一行数据 row_1 = cur.fetchone() print(row_1) # out: (1, ‘Boss‘) # 获取前n行数据 row_2 = cur.fetchmany(3) print(row_2) # out: ((2, ‘xiaodi‘), (3, ‘zhubajie‘), (4, ‘sunwukong‘)) # 获取所有数据 row_3 = cur.fetchall() print(row_3) # out: ((1, ‘Boss‘), (2, ‘xiaodi‘), (3, ‘zhubajie‘), (4, ‘sunwukong‘)) # 提交 conn.commit() # 关闭游标 cur.close() # 关闭连接 conn.close()
注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如: cur.scroll(1,mode=‘relative‘) # 相对当前位置移动,数字1 也可以为负数,只是移动方向不同而已 cur.scroll(2,mode=‘absolute‘) # 相对绝对位置移动
扩展:通过pymysql获取Dict数据类型
从上边的案例可以看出,pymysql获取的结果,是以元组的形式输出,对于不了解表结构的人来说,无疑不知道每个元素对应的列。
因此,如果想要或者字典类型的数据,需要创建游标的时候,设置返回的数据集类型,即:
# 游标设置为字典类型 cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
Python操作MySQL -即pymysql/SQLAlchemy用法
标签:
原文地址:http://www.cnblogs.com/pangguoping/p/5720322.html