码迷,mamicode.com
首页 > 数据库 > 详细

Python操作MySQL -即pymysql/SQLAlchemy用法

时间:2016-07-30 10:34:37      阅读:418      评论:0      收藏:0      [点我收藏+]

标签:

本节介绍Python对于MySQL的一些操作用法

模块:pymysql(等同于MySQLdb)

说明:pymysql与MySQLdb模块的使用基本相同,学会pymysql,使用MySQLdb也就不是问题

安装API

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!