当前位置: 首页 > news >正文

如何离线安装和使用pymysql操作mysql数据库

一、应用背景

在企业内部网络要使用python操作mysql数据库。然而,python未自带访问MySQL数据库的函数库pymysql,需要另外安装。网上有很多安装pymysql都需要互联网支持。本文主要阐述如何离线安装pymysql,并简要介绍pymysql如何进行mysql操作。

pymysql是一个纯Python编写的MySQL数据库驱动,基于Python DB-API 2.0规范。它不仅支持Python 2.x版本,还支持Python 3.x版本,因此在使用时需要根据自己的Python版本选择合适的pymysql安装包。

二、环境准备

1.pymysql的版本。本文使用的Python版本是python 3.9,因此使用的pymysql的版本是0.9.3。

2.anaconda3的版本。本文的python运行环境是anaconda 2.3.1,python3.9。

3.IDE环境。本文采用anaconda自带的python IDE软件Spyder 5.2.2。

4.mysql的版本。MySQL版本是5.7,由wampserver 2.5提供,如果要使用mysql8.1版本,可以参考文章MySql数据库5.7升级到8.1遇到的问题与解决方案_wamp升级mysql_hongdi的博客-CSDN博客

三、pymsql的安装

1.下载pymsql安装包

下载地址:https://mirrors.cloud.tencent.com/pypi/packages/da/15/23ba6592920e21cb40eb0fe0ea002d2b6177beb1ca8a4c1add5a8f32754d/PyMySQL-0.9.3.tar.gz#sha256=d8c059dcd81dedb85a9f034d5e22dcb4442c0b201908bede99e306d65ea7c8e7

这里也提供下其他版本的下载地址:

PyMySQL-1.0.0.tar.gzicon-default.png?t=N7T8https://mirrors.cloud.tencent.com/pypi/packages/2b/c4/3c3e7e598b1b490a2525068c22f397fda13f48623b7bd54fb209cd0ab774/PyMySQL-1.0.0.tar.gz#sha256=b2508a7dc6b626210e52f711d2c2361d102d8d9b8b144e63b2512e748de1a49b

PyMySQL-1.1.0.tar.gzicon-default.png?t=N7T8https://mirrors.cloud.tencent.com/pypi/packages/41/9d/ee68dee1c8821c839bb31e6e5f40e61035a5278f7c1307dde758f0c90452/PyMySQL-1.1.0.tar.gz#sha256=4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96

 2.安装pyMySQL

(1)将pymsql-0.9.3.tar.gz解压到anaconda安装目录下,假设是E:\Anaconda3

(2)打开cmd命令行界面,切换到E:\Anaconda3,然后输入命令python setup.py install

(3)测试是否安装成功。在命令行中进入Python解释器,输入命令>>>import pymysql回车,不报错的化,基本可以认为pymsql安装成功。

四、pymysql的开发介绍

(一)pymysql的编码流程

 1.建立数据库连接 db = pymysql.connect(参数)
        connect()函数的参数:host=主机地址或本地localhost,port=端口号(默认3306),
                                             user=用户名,password=密码,

                                             database=数据库,charaset=编码方式(默认utf8)
  2.创建游标对象 cur = db.cursor()
  3.通过游标执行方法 cur.execute("sql语句")
  4.提交到数据库  db.commit()  
  5.关闭游标对象  cur.close()
  6.关闭数据库连接   db.close()

(二)pymysql中的查询

pymysql的增、删、改就比较简单,只要将相应的insert、delete、update语句放到cur.execute中执行即可。对于查的方面pymysql就提供几种方法:fetchone、fetchall、fetchmany,下面分别进行介绍:

1.fetchone方法

返回单条记录,即一个元组,如果没有数据,则返回None.如:

cur.execute("select col1,col2, from mytable where id=1");

arr=cur.fetchone()

#通过arr[0]和arr[1]可以访问col1和col2的值

print(arr[0],arr[1])

注意:多次循环使用cursor.fetchone(),依次取得下一条结果,直到为空。

2.fetchall方法

 返回多条记录,即多个元组,如果没有结果,则返回 (),代码如下

cur.execute("select col1,col2, from mytable ");

arrs = cur.fetchall()
for row in arrs:
    print(row)

3.fetchmany(n)方法

获取前n行数据,代码如下:

cur.execute("select col1,col2, from mytable ");

arr3 = cur.fetchmany(3) 获取前三行数据

(三)pymysql中占位符的使用

开发过程经常需要用到往sql语句中传递参数,最简单的做法的通过拼接字符串的方式,但这样的方式容易被进行sql注入攻击。所以在进行开发时,建议通过传递参数的方式进行开发。这里主要介绍几种方法。

假设需要往mytable表中添加记录

正常的SQL语句:sql = “insert into mytable (col1,col2) values (‘user1’,19),(‘user2’,20);”

1.占位符法:

sql = “insert into mytable (col1,col2) values (‘%s’,%f),(‘%s’,%f);”

为了保持与sql语句格式完全匹配,需要编写如下语句:

sql = “insert into mytable (col1,col2) values (‘%s’,%f),(‘%s’,%f);”%('user1',19,'user2',20)

注意:此种方式需要对字符串占位符加单引号'%s'

2.参数传递法:

sql = “insert into mytable (col1,col2) values (‘%s’,%f),(‘%s’,%f);”

在execute方法中除了传递sql,还要传入对应参数列表,如下语句:

cur.execute(sql,['user1',19,'user2',20])
注意:这里的第二个参数,会按列表中的值顺次匹配

(四)完整的源码示例

import pymysqldb = pymysql.connect(host='localhost',port=3306,user='user',password='pwd',database='mydatabase',charset='utf8')
cur = db.cursor()
sql = "INSERT INTO interest (col1,col2) VALUES ('%s',%f),('%s',%f);"
try:cur.execute(sql, ['user1',19,'user2',20])db.commit()
except Exception as e:db.rollback()
finally:cur.close()db.close()


 

http://www.lryc.cn/news/177595.html

相关文章:

  • Prometheus-监控Mysql进阶用法(1)(安装配置)
  • 网络安全(黑客技术)自学内容
  • linux centos7 安装mongodb7.0.1 及 mongosh2.0.1
  • c++ | makefile | 编译 | 链接库
  • n个骰子掷出m点的概率,C++实现
  • 【JUC系列-08】深入理解CyclicBarrier底层原理和基本使用
  • 企业专线成本高?贝锐蒲公英轻松实现财务系统远程访问
  • 自学——网络安全——黑客技术
  • k8s部署gin-vue-admin框架、gitlab-ci、jenkins pipeline 、CICD
  • 【SpringBoot项目】SpringBoot+MyBatis+MySQL电脑商城
  • 互联网医院|互联网医院系统引领医疗科技新风潮
  • Mock安装及应用
  • 一起来看看UI设计流程详解吧!通俗易懂
  • TikTok营销成功秘籍:ROI指标的黄金法则
  • 17.适配器模式(Adapter)
  • leetcode做题笔记154. 寻找旋转排序数组中的最小值 II
  • 什么是推挽电路?
  • 208.Flink(三):窗口的使用,处理函数的使用
  • 时序预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络时间序列预测
  • 【知识点】增量学习、在线学习、离线学习的区别
  • c++ 学习 之 运算符重载 之 前置++和后置++
  • K8s Kubelet 垃圾回收机制
  • docker安装高斯数据库openGauss数据库
  • 新手学习:ArcGIS 提取SHP 路网数据、节点
  • 性能测试 —— Tomcat监控与调优:Jconsole监控
  • 刷题笔记26——图论二分图判定
  • 网站整站优化-网站整站优化工具
  • 冲刺十五届蓝桥杯P0001阶乘求和
  • c++ 学习 之 运算符重载
  • 各种数据库表名长度限制整理