pymsql 模块

  基本应用介绍:

# 安装模块
pip install PyMySql # 导入模块
import pymysql # 配置连接信息
config = {
'host':'127.0.0.1',
'port':3306,
'user':'root',
'password':'',
'db':'anec',
'charset':'utf8'
} # 连接数据库
db = pymysql.connect(**config) # 获取游标
start = db.cursor()
#默认获取数据的格式为元组格式 cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
#设置cursor设置为pymysql.cursors.DictCursor,可以将显示数据为 字典格式 cursor.scroll(1,mode='relative') # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
# 第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动 # 执行sql语句
start.execute()
# 执行单条语句
start.executemany()
# 执行多条语句 #获取单条数据
dp = start.fetchone() # 获取所有数据
dp = start.fetchall() # 获取指定条数数据
dp = start.fetchone(3)
#获取3条数据 # 关闭数据库连接
db.close() # ------------------------------------------------- # 使用预处理语句创建表
sql = """CREATE TABLE test1 (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
start.execute(sql) # ------------------------------------------------- # SQL 查询语句
sql = "SELECT * FROM EMPLOYEE WHERE INCOME > '%d'" % 1000
try:
# 执行SQL语句
start.execute(sql)
# 获取所有记录列表
results = start.fetchall()
for row in results:
print (row)
except:
print ("Error: unable to fetch data") # ------------------------------------------------- # SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
# 可以
sql2 = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s','%s','%d','%c','%d')" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# 执行sql语句
start.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback() # ------------------------------------------------- # SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
# 执行SQL语句
start.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback() # ------------------------------------------------- # 使用 execute() 方法执行 SQL,如果表存在则删除
start.execute("DROP TABLE IF EXISTS EMPLOYEE") # SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
# 执行SQL语句
start.execute(sql)
# 提交修改
db.commit()
except:
# 发生错误时回滚
db.rollback()

  上下文管理协议(示例)

# pymsql 支持 上下文管理协议
import pymysql
config={
"host":"127.0.0.1",
"user":"root",
"password":"",
"database":"test"}
db = pymysql.connect(**config) with db.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
#获取数据库连接的对象
sql = "SELECT * FROM userinfo"
cursor.execute(sql)
res = cursor.fetchone()
print(res)
cursor.scroll(2,mode='relative')
res = cursor.fetchone()
print(res)
cursor.close()
db.close()

简易封装pymysql类模块(数据表操作,查询/添加/修改/删除)

import pymysql

class Mysql:

    def __init__(self,db_dict):
self.db = pymysql.connect(**db_dict)
self.cursor = self.db.cursor(cursor=pymysql.cursors.DictCursor) def __del__(self):
self.cursor.close()
self.db.close() def query(self,info):
self.cursor.execute(info)
datainfo = self.cursor.fetchall()
return datainfo def insert(self,tn,dict_data):
'''
:param tn: tablename 表名
:param dict_data: key值为字段,value为数据值
:return: 执行成功返回OK
'''
try:
key = ','.join([k for k in dict_data])
val = tuple([v for v in dict_data.values()])
sql = """insert into %s(%s)values%s; """ % (tn,key,val)
self.cursor.execute(sql)
self.db.commit()
return 'OK'
except:
self.db.rollback() def insert_many(self,tn,list_dict_data):
'''
:param tn: tablename 表名
:param list_dict_data: 输入 list[dict{}] 数据类型,dict{key值为字段,value为数据值}
:return: 执行成功返回OK
'''
try:
for dict_data in list_dict_data:
key = ','.join([k for k in dict_data])
val = tuple([v for v in dict_data.values()])
sql = """insert into %s(%s)values%s; """ % (tn,key,val)
self.cursor.execute(sql)
self.db.commit()
return 'OK'
except:
self.db.rollback() def update(self,tn,key,val,tj,**kwargs):
try:
sql = r"""update %s set %s = '%s' where %s ;"""%(tn,key,val,tj)
self.cursor.execute(sql)
self.db.commit()
return 'OK'
except:
self.db.rollback() def dele(self,tn,tj,**kwargs):
try:
sql = r"""delete from %s where %s""" % (tn,tj)
self.cursor.execute(sql)
self.db.commit()
return 'OK'
except:
self.db.rollback() def dele_table(self,tn,mode=1):
"""
:param tn: 表名
:param mode: 模式1,只删除数据不删表
模式2,删除整个表
:return: 返回OK 表示操作成功
"""
try:
if mode == 1:
sql ="""truncate %s;"""% tn
self.cursor.execute(sql)
self.db.commit()
return 'OK' elif mode == 2:
sql = """drop table %s;""" % tn
self.cursor.execute(sql)
self.db.commit()
return 'OK'
except:
self.db.rollback() config = {
'host':'localhost',
'port':3306,
'user':'root',
'password':'',
'db':'anec2',
'charset':'utf8'
} test1 = Mysql(config)
#
# # #查询数据
# dp = test1.query("select * from t1")
# for i in dp:
# print(i) # #插入单条 字典数据
# dict_data = {'name':'小华','phone':998123,"email":"232323232@qq.com"}
# dp = test1.insert('t2',dict_data)
# print(dp) # # #插入多条列表[字典]数据 : [{'name':'alex3'},]
# list_dict_data = [{'name':'小妹','phone':932323,"email":"2335433232@qq.com"},
# {'name': '小佛', 'phone': 99421323, "email": "433232@qq.com"},
# {'name': '小带', 'phone': 9932323, "email": "33445323232@qq.com"}]
# dis = test1.insert_many('t2',list_dict_data)
# print(dis) # # 修改数据信息
# #方式一:
# test1.update('t1', 'name', 'abcabc','id=64')
#
# #方式二:
# x = {
# 'tn':'t1',
# 'key':'name',
# 'val':"123",
# 'tj':'id=63'}
# test1.update(**x) # # # 删除数据
# #方式一:
# dp = test1.dele("t1","id >73")
# print(dp) # #方式二:
# x = {
# 'tn':'t1',
# 'tj':'id=73'}
# dp = test1.dele(**x)
# print(dp) # # 删除表
# #mode = 1 ,只删除数据,不删表(默认值)
# #mode = 2 ,删除整个表
# dp= test1.dele_table('t1',mode=1)
# print(dp)

python - pymysql模块的更多相关文章

  1. mysql python pymysql模块 基本使用

    我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢? 这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装 pi ...

  2. Python pymysql 模块

    pymysql 是 Python3 连接 MySQL 的一个模块,常见用法如下: [root@localhost ~]$ pip3 install pymysql # 安装 pymysql 模块 In ...

  3. python:pymysql模块使用

    一,基本使用 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,p ...

  4. Python pymysql模块学习心得

    PyMySQL包含了一个纯Python的MySQL客户端的库,它的目的是用来替换MySQLdb,并且工作在CPython,PyPy和IronPython. PyMySQL官方地址:https://py ...

  5. mysql python pymysql模块 增删改查 插入数据 介绍 commit() execute() executemany() 函数

    import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...

  6. mysql python pymysql模块 增删改查 查询 fetchone

    import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...

  7. mysql python pymysql模块 增删改查 查询 字典游标显示

    我们看到取得结果是一个元祖,但是不知道是哪个字段的,如果字段多的时候,就比较麻烦 ''' (1, 'mike', '123') (2, 'jack', '456') ''' 用字典显示查询的结果,也可 ...

  8. mysql python pymysql模块 增删改查 查询 fetchmany fetchall函数

    查询的fetchmany fetchall函数 import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' ...

  9. mysql python pymysql模块 获取插入的最后一条数据的自增ID lastrowid()方法

    调用游标下的lastrowid 可以获取插入之前的表里id字段存放到哪个自增id cursor.lastrowid mysql> select * from userinfo; +----+-- ...

随机推荐

  1. zookeeper脑裂

    出现: 在搭建hadoop的HA集群环境后,由于两个namenode的状态不一,当active的namenode由于网络等原因出现假死状态,standby接收不到active的心跳,因此判断activ ...

  2. Nginx 性能优化有这篇就够了!

    目录: 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 g ...

  3. python自动化开发-[第二十二天]-bbs多级评论、点赞、上传文件

    今日概要: 1.related_name和related_query_name的区别 2.through_fields的用途 3.django的事务提交 4.点赞的动画效果 5.多级评论的原理 6.上 ...

  4. python自动化开发-[第二天]-基础数据类型与编码(续)

    今日简介: - 编码 - 进制转换 - 初识对象 - 基本的数据类型 - 整数 - 布尔值 - 字符串 - 列表 - 元祖 - 字典 - 集合 - range/enumcate 一.编码 encode ...

  5. CodeForces11D 状压dp

    http://codeforces.com/problemset/problem/11/D 题意 给定一个简单图,输出其中的简单环的数目.简单环的含义是,不包含重复顶点.重复边的环. 1 <= ...

  6. docker mesos集群资源调度平台

    mesos原理与架构 首先,再次需要强调 Mesos 自身只是一个资源调度框架,并非一整套完整的应用管理平台,所以只有 Mesos 自己是不能干活的.但是基于 Mesos,可以比较容易地为各种应用管理 ...

  7. 鼠标右键Table的td弹出多级菜单,双击td编辑

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  8. Trailing slash

    Trailing Slash common case It's common for URLs with a trailing slash to indicate a directory, and t ...

  9. LGV 算法 (Lindström–Gessel–Viennot lemma)

    e(ai,bi)为从起点ai到终点bi的方案数.以上矩阵行列式结果就是(a1,a2,...an) 到 (b1,b2,...bn) 的所有不相交路径的种数. 具体证明的话看wiki,比较长.. 这个定理 ...

  10. PHP7 网络编程(二)daemon守护进程

    前言 在一个多任务的计算机操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的计算机程序.此类程序会被以进程的形式初始化.守护进程程序的名称通常以字母“ ...