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. 在中国使用苹果Mac电脑的都是些什么人?

    来源:PConline 资讯 文章收录于:风云社区(提供上千款各类Mac软件下载)   (图片来源于互联网分享,如涉及版权问题请联系作者删除) 在中国用Mac的都是什么人?腾讯CDC用户研究中心对 Q ...

  2. percona-5.7二进制多实例安装

    percona-mysql-5.7二进制多实例安装 规划:端口号     配置文件     备注3306 /data/mysql/mysql_3306/my_3306.cnf 3307 /data/m ...

  3. bzoj1875 边点互换+矩乘

    https://www.lydsy.com/JudgeOnline/problem.php?id=1875 题意 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走 ...

  4. 获取日k数据

    http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?_var=kline_dayqfq&param=sz002921,day,,,320,qfq ...

  5. python 微信爬虫实例

    单线程版: import urllib.request import urllib.parse import urllib.error import re,time headers = (" ...

  6. SQL语法基础之CREATE语句

    SQL语法基础之CREATE语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看帮助信息 1>.使用“?”来查看MySQL命令的帮助信息 mysql> ? CR ...

  7. Redis AOF、RDB持久化

    持久化一:RDB方式 默认配置: save 900 1save 300 10save 60 10000 持久化二:AOF方式 默认配置:appendonly no,appendfilename &qu ...

  8. freemarker迭代list、map等常规操作,将数据放到模板中

    转自:https://blog.csdn.net/wickedvalley/article/details/65937189 一.controller开始准备模型.数据1.po类 package co ...

  9. ubuntu主题收集

    ubuntu主题收集 一些cmd常用命令: 任务栏底部,进入Dash并打开终端,命令最后一个是参数可选 ( Left | Bottom ) gsettings set com.canonical.Un ...

  10. dubbo监控中心---dubbo-admin

    dubbo监控中心---dubbo-admin: 一:dubbo管理平台搭建: 1-1:下载dubbo-admin.war包 https://pan.baidu.com/s/16jkoSozY68M7 ...