python - pymysql模块
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模块的更多相关文章
- mysql python pymysql模块 基本使用
我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢? 这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装 pi ...
- Python pymysql 模块
pymysql 是 Python3 连接 MySQL 的一个模块,常见用法如下: [root@localhost ~]$ pip3 install pymysql # 安装 pymysql 模块 In ...
- python:pymysql模块使用
一,基本使用 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,p ...
- Python pymysql模块学习心得
PyMySQL包含了一个纯Python的MySQL客户端的库,它的目的是用来替换MySQLdb,并且工作在CPython,PyPy和IronPython. PyMySQL官方地址:https://py ...
- mysql python pymysql模块 增删改查 插入数据 介绍 commit() execute() executemany() 函数
import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...
- mysql python pymysql模块 增删改查 查询 fetchone
import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...
- mysql python pymysql模块 增删改查 查询 字典游标显示
我们看到取得结果是一个元祖,但是不知道是哪个字段的,如果字段多的时候,就比较麻烦 ''' (1, 'mike', '123') (2, 'jack', '456') ''' 用字典显示查询的结果,也可 ...
- mysql python pymysql模块 增删改查 查询 fetchmany fetchall函数
查询的fetchmany fetchall函数 import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' ...
- mysql python pymysql模块 获取插入的最后一条数据的自增ID lastrowid()方法
调用游标下的lastrowid 可以获取插入之前的表里id字段存放到哪个自增id cursor.lastrowid mysql> select * from userinfo; +----+-- ...
随机推荐
- zookeeper脑裂
出现: 在搭建hadoop的HA集群环境后,由于两个namenode的状态不一,当active的namenode由于网络等原因出现假死状态,standby接收不到active的心跳,因此判断activ ...
- Nginx 性能优化有这篇就够了!
目录: 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 g ...
- python自动化开发-[第二十二天]-bbs多级评论、点赞、上传文件
今日概要: 1.related_name和related_query_name的区别 2.through_fields的用途 3.django的事务提交 4.点赞的动画效果 5.多级评论的原理 6.上 ...
- python自动化开发-[第二天]-基础数据类型与编码(续)
今日简介: - 编码 - 进制转换 - 初识对象 - 基本的数据类型 - 整数 - 布尔值 - 字符串 - 列表 - 元祖 - 字典 - 集合 - range/enumcate 一.编码 encode ...
- CodeForces11D 状压dp
http://codeforces.com/problemset/problem/11/D 题意 给定一个简单图,输出其中的简单环的数目.简单环的含义是,不包含重复顶点.重复边的环. 1 <= ...
- docker mesos集群资源调度平台
mesos原理与架构 首先,再次需要强调 Mesos 自身只是一个资源调度框架,并非一整套完整的应用管理平台,所以只有 Mesos 自己是不能干活的.但是基于 Mesos,可以比较容易地为各种应用管理 ...
- 鼠标右键Table的td弹出多级菜单,双击td编辑
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...
- Trailing slash
Trailing Slash common case It's common for URLs with a trailing slash to indicate a directory, and t ...
- LGV 算法 (Lindström–Gessel–Viennot lemma)
e(ai,bi)为从起点ai到终点bi的方案数.以上矩阵行列式结果就是(a1,a2,...an) 到 (b1,b2,...bn) 的所有不相交路径的种数. 具体证明的话看wiki,比较长.. 这个定理 ...
- PHP7 网络编程(二)daemon守护进程
前言 在一个多任务的计算机操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的计算机程序.此类程序会被以进程的形式初始化.守护进程程序的名称通常以字母“ ...