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. Codeforces Round #518 (Div. 2) B LCM

    传送门 https://www.cnblogs.com/violet-acmer/p/10163375.html 题解: 这道题有点意思,有点数学的味道. 根据定义“[a,b] / a”可得这求得是l ...

  2. 开发问题及解决--java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout

    <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android=" ...

  3. 函数:PHP将字符串从GBK转换为UTF8字符集iconv

    1. iconv()介绍 iconv函数可以将一种已知的字符集文件转换成另一种已知的字符集文件.例如:从GB2312转换为UTF-8. iconv函数在php5中内置,GB字符集默认打开. 2. ic ...

  4. mysql ibdata1损坏

    机房一台服务器上的mysql运行一段时间了,突然出现了一个很奇怪的现象:重启后无法恢复了!准确情况是:启动mysql后随即就又关闭了. 查看mysql错误日志如下: 160920 22:41:41 m ...

  5. fork()、vfork()、clone()的区别

    因为生活的复杂,这是一个并行的世界,在同一时刻,会发生很多奇妙的事情,北方下雪,南方下雨,这里在吃饭,那边在睡觉,有人在学习,有人在运动,所以这时一个多彩多姿的世界,每天都发生着很多事情,所以要想很好 ...

  6. OpenCV编译以及QT Creator配置

    OpenCV编译以及QT Creator配置 在进行编译前,需下载以下工具和源码: CMake ---- 用于编译: 下载地址; https://cmake.org/ 安装在D:\Program Fi ...

  7. 10款 Mac 系统优化清理工具软件推荐和下载

    本文内容及图片来源[风云社区 SCOEE] 在Windows上有各种安全卫士.系统助手等系统优化和清理工具,比如360安全卫士.腾讯安全管家等,同样MacOS系统也有很多好用的系统优化清理工具,体验比 ...

  8. 2017-12-15python全栈9期第二天第三节之使用while循环输出0到10

    #!/user/bin/python# -*- coding:utf-8 -*-count = 0while count < 10: count += 1 print(count)

  9. Python中的格式化输出

    百分号格式化输出 百分号默认右对齐 %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 %b 二进制整数 %d 十进制整数 %i 十进制整数 %o 八进制 ...

  10. linux中文件多行合并为一行的例子

    现网中经常遇到匹配到某一关键字下的所有行合并到同一行,再次匹配到相关关键字再和下面的合并,示例如下: # line1ab# line2cde# line3f想要变成: # line1 a b# lin ...