MySQL适配器PyMySQL详解


Posted in Python onSeptember 20, 2017

本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查。

什么是 PyMySQL?

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

PyMySQL 安装
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。

PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。

如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:

$ pip install PyMySQL

如果你的系统不支持 pip 命令,可以使用以下方式安装:

1、使用 git 命令下载安装包安装(你也可以手动下载):

$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install

2、数据库操作实例,直接上代码。

import pymysql
import datainfo
import time

#获取参数

host = datainfo.host
username = datainfo.username
password = datainfo.password
database = datainfo.db

print()

#测试数据库连接
def testconnect():

 #打开数据库链接

 db = pymysql.connect(host,username,password,database)

 #使用cursor() 方法创建一个游标对象 cursor

 cursor = db.cursor()

 #使用execute()方法执行SQL查询

 cursor.execute("select version()")

 #使用fetchone ()获取单条数据

 data = cursor.fetchone()

 print(data)

 db.close()

#插入数据库
def InsertDate():
 #打开数据库链接

 db = pymysql.connect(host,username,password,database,charset='utf8')

 #使用cursor() 方法创建一个游标对象 cursor

 cursor = db.cursor()

 create_time = time.strftime('%Y-%m-%d %H:%M:%S')
 update_time = time.strftime('%Y-%m-%d %H:%M:%S')
 start_time = time.strftime('%Y-%m-%d %H:%M:%S')
 end_time = time.strftime('%Y-%m-%d %H:%M:%S')
 remark = "测试插入信息"
 print("开始")
 #Sql 插入语句
 sql = "insert into demo(start_time,end_time,creat_time,update_time,remark) " \
   "VALUES ('%s','%s','%s','%s','%s')"\
   %(start_time,end_time,create_time,update_time,remark)
 try:
  #执行sql
  print("执行插入")
  tt = cursor.execute(sql)
  print(tt)
  db.commit()
 except UnicodeEncodeError as e :
  #发生错误时回滚
  print(e)
  db.rollback()
 db.close()


#查询操作
def selectData():
 db = pymysql.connect(host, username, password, database, charset='utf8')

 # 使用cursor() 方法创建一个游标对象 cursor

 cursor = db.cursor()

 sql = "select * from demo where id >='%d'" %(1)
 try:
  #执行sql
  print("执行查询")
  cursor.execute(sql)
  results = cursor.fetchall()
  for row in results:
   id = row[0]
   start_time = row[1]
   end_time = row[2]
   create_time = row[3]
   update_time = row[4]
   remark = row[5]
   #打印结果
   print("id = %d,start_time=%s,end_time=%s,create_time=%s,update_time=%s,remark=%s" %(id,start_time,end_time,create_time,update_time,remark))

  db.commit()
 except UnicodeEncodeError as e :
  #发生错误时回滚
  print(e)

 db.close()

#更新操作
def update_data():
 db = pymysql.connect(host, username, password, database, charset='utf8')

 # 使用cursor() 方法创建一个游标对象 cursor

 cursor = db.cursor()
 update_time = time.strftime('%Y-%m-%d %H:%M:%S')
 sql = "update demo set update_time ='%s' where id >='%d' " %(update_time,1)
 try:
  #执行sql
  print("执行更新")
  cursor.execute(sql)

  db.commit()
 except UnicodeEncodeError as e :
  #发生错误时回滚
  print(e)
  db.rollback()
 db.close()

#删除操作
def delete_Date():
 db = pymysql.connect(host, username, password, database, charset='utf8')

 # 使用cursor() 方法创建一个游标对象 cursor

 cursor = db.cursor()

 sql = "delete from demo where id <'%d' " %(1)
 try:
  #执行sql
  print("执行删除")
  cursor.execute(sql)

  db.commit()
 except UnicodeEncodeError as e :
  #发生错误时回滚
  print(e)
  db.rollback()
 db.close()


if __name__ == '__main__':
 testconnect()
 InsertDate()
 selectData()
 update_data()
 delete_Date()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现文件路径和url相互转换的方法
Jul 06 Python
python非递归全排列实现方法
Apr 10 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
Python基于TCP实现会聊天的小机器人功能示例
Apr 09 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
实例介绍Python中整型
Feb 11 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
详解Python3 基本数据类型
Apr 19 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
Python logging模块原理解析及应用
Aug 13 Python
使用python爬取抖音app视频的实例代码
Dec 01 Python
python文件与路径操作神器 pathlib
Apr 01 Python
Python字符串格式化的方法(两种)
Sep 19 #Python
python3 pillow生成简单验证码图片的示例
Sep 19 #Python
Python文件操作之合并文本文件内容示例代码
Sep 19 #Python
使用Python &amp; Flask 实现RESTful Web API的实例
Sep 19 #Python
python基本语法练习实例
Sep 19 #Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 #Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 #Python
You might like
php下获取客户端ip地址的函数
2010/03/15 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHP生成随机密码类分享
2014/06/25 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
JS中style属性
2006/10/11 Javascript
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
JavaScript 学习点滴记录
2009/04/24 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
Python+微信接口实现运维报警
2016/08/27 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
个人简历自我评价
2014/01/06 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
审计专业自荐信范文
2014/04/21 职场文书
施工协议书范本
2014/04/22 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python