概述
pymysql
是一个纯 Python 实现的 MySQL 客户端操作库。
- Python –以下之一:
- CPython > = 2.7或> = 3.5
- CPython > = 2.7或> = 3.5
- MySQL Server –以下之一:
- MySQL > = 5.5
- MariaDB > = 5.5
通用使用步骤
import pymysql # 连接 MySQL conn = pymysql.connect( host="127.0.0.1", port=3306, user="root", password="123456", database="bigdataboy", charset='utf8' ) # 创建光标 cur = conn.cursor() # SQL语句 sql = "" # 执行SQL语句 r= cur.execute(sql) # 这一步提交只有在 修改,增加,删除 时需要,查询时不需要。 conn.commit() # commit 作用是:更新状态到数据库 # 关闭连接 conn.close()
创表
import pymysql conn = pymysql.connect( host="127.0.0.1", port=3306, user="root", password="123456", database="bigdataboy", charset='utf8' ) cur = conn.cursor() sql = """ create table bigdata( id int primary key auto_increment, name varchar(255) not null, phone int ) charset="utf8"; """ r= cur.execute(sql) # 创建成功返回 0 ,失败返回 1 conn.commit() conn.close()
插入数据
插入一条数据
import pymysql conn = pymysql.connect( host="127.0.0.1", port=3306, user="root", password="123456", database="bigdataboy", charset='utf8' ) cur = conn.cursor() sql = "insert into bigdata values(null,'bigdataboy',123456789)" r= cur.execute(sql) # 插入成功返回 1 ,影响的行数 conn.commit() conn.close()
插入多条数据
使用如下executemany()
方法可以 预防SQL注入攻击
。
import pymysql conn = pymysql.connect( host="127.0.0.1", port=3306, user="root", password="123456", database="bigdataboy", charset='utf8' ) cur = conn.cursor() # 需要插入数据用 %s 代替 sql = "insert into bigdata values(null,%s,%s)" data = [ ("Bob",123456), ("Block",123456), ("Bigdataboy",123456789) ] # 参数 1 是 SQL 语句,参数 2 是数据列表(需要循环)。 r= cur.executemany(sql,data) # 返回添加的行数 conn.commit() conn.close()
查询数据
查询结果有 4 中返回格式:
Cursor
: 默认,元组类型DictCursor
: 字典类型SSCursor
: 无缓冲 元组类型SSDictCursor
: 无缓冲 字典类型
无缓冲 游标类型,适用于数据量很大,一次性返回太慢,或者服务端带宽较小
默认元组返回结果
cur = conn.cursor() sql = "select * from bigdata;" r = cur.execute(sql) # 返回查询到的数据条数 print(cur.fetchall()) # 提取所有查询到的结果 conn.close() ----------------------------- ((1, 'bigdataboy', 123456789), (2, 'bigdataboy', 123456789), (3, 'bigdata', 1234567), (4, 'Bob', 123456))
字段返回类型
import pymysql conn = pymysql.connect( host="127.0.0.1", port=3306, user="root", password="123456", database="bigdataboy", charset='utf8' ) # 指定 DictCursor 类 cur = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "select * from bigdata;" r = cur.execute(sql) print(cur.fetchall()) # 提取所有查询到的结果 conn.close() ------------------------------- [{'id': 1, 'name': 'bigdataboy', 'phone': 123456789}, {'id': 2, 'name': 'bigdataboy', 'phone': 123456789}, {'id': 3, 'name': 'bigdata', 'phone': 1234567}]
返回结果的提取方法
方法 | 作用 |
---|---|
fetchall() | 取出全部的数据,可以返回一个结果集 |
fetchmany(size) | 取出一定数量的数据 |
fetchone() | 取出一条数据 |
版权声明:《 【Python 模块】pymysql 基本使用 》为明妃原创文章,转载请注明出处!
最后编辑:2020-3-17 11:03:34