pymysql操作mysql数据库

一、pymysql操作mysql数据库

  • 安装pymysql

    pip install pymysql

1.1 pymysql操作数据库的五行拳

  1. 连接数据库

    使用Connect方法连接数据库

    pymysql.Connections.Connection(host=None, user=None, password='', database=None, port=0,  charset='')
    参数说明:host – 数据库服务器所在的主机。user – 登录用户名。password – 登录用户密码。database – 连接的数据库。port – 数据库开放的端口。(默认: 3306)charset – 连接字符集。
    返回值:返回连接对象例子:
    link = pymysql.Connect(host='localhost', port=3306, user='root', password='123456', db='zzl', charset='utf8')
    ​
    • 连接对象方法

    方法说明
    begin()开启事务
    commit()提交事务
    cursor(cursor=None)创建一个游标用来执行sql语句
    rollback()回滚事务
    close()关闭连接
    select_db(db)选择数据库
    set_charset(charset)设置字符集
  2. 创建游标

    cursor = link.cursor()  
    cursor=pymysql.Cursors.DictCursor()  #[{}]
    print(cursor.rowcount) #打印受影响行数
    方法说明
    close()关闭游标
    execute(query, args=None)执行单条语句,传入需要执行的语句,是string类型;同时可以给查询传入参数,参数可以是tuple、list或dict。执行完成后,会返回执行语句的影响行数。
    fetchone()取一条数据
    fetchmany(n)取多条数据
    fetchall()取所有数据
    _executed属性正在执行的sql语句
  3. 执行sql语句

    # 执行sql语句
    sql = 'select * from user1'
    # 执行完sql语句,返回受影响的行数
    num = cursor.execute(sql)
  4. 获取结果集

    result1 = cursor.fetchone()
    print(result1)
  5. 关闭连接

    cursor.close()
    link.close()

1.2 pymysql中事务处理

pymysql默认是没有开启自动提交事务,所以我们如果进行增、删、改,就必须手动提交或回滚事务。

sql = 'delete from user where id=%s' % user_id
​
# 如果要执行增删改语句的时候,下面的就是固定格式
try:cursor.execute(sql)# 如果全部执行成功,提交事务link.commit()print(cursor.lastrowid) #获取最后插入记录的自增id号
except Exception as e:print(e)link.rollback()
​

1.3 防sql注入

  • pymysql.escape_string(str) 转移字符串中特殊字符(‘,“等)

  • cursor.execute(sql,参数),参数化,不要直接拼接sql字符串

二、封装数据库操作类

2.1.数据库操作类的封装

  • 一个数据库model类对应一个表

  • 数据库model类的核心是连贯操作和方法的无顺序调用

    db.where('username="admin"').table('blog_user').field('username,password').select()
    # select usenrame,password from blog_user where username='admin'
    # sql = "SELECT {fields} FROM {table} {where} {groupby} {having} {orderby} {limit}".format()

2.2 连贯操作

方法要返回self

2.3 方法的无顺序调用

  • 在进行数据库查询时,不用考虑方法的先后顺序。

  • 核心思想

    • 无论怎么调用,最终生成sql语句。

    • 每调用一个方法,就生成对应sql子句

    • 涉及到的技术点:字符串拼接

    • 每次调用的最后必定是select、insert、update、delete,这些方法不返回self

2.4 字段缓存

  • 在查询语句中尽量不要出现*,我们可以将表的字段缓存的文件中,实例化数据库model类时,加载缓存字段,如果不指定字段就使用缓存字段

  • 也可以通过缓存字段过滤增删改时无效的字段

三、分页类

分页是通过解析url中page参数(可以自己指定),结合sql语句中limit子句,从数据库中查询每个页面所需数据,具体可以分为以下步骤:

  • 1) 获取总记录数

  • 2)获取每页显示的记录个数

  • 3)计算总页数:总记录数/每页记录个数,然后上取整

  • 4)解析url获取当前页数

  • 5)计算limit子句所需的偏移量: limit (当前页数-1)*每页记录个数,每页记录个数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SecureCRT常用的使用技巧

文章目录前言:1、SecureCRT 超时自动断开连接的解决办法2、SecureCRT连接Linux时,终端显示乱码的问题。3、SecureCRT使用自动记录日志功能4、使用SecureCRT从Windows上传文件到Linux5、SecureCRT配色推荐和永久设置前言: 由于工作需要&#…

解决:(1062, Duplicate entry '2019-08-30' for key 'rdate')

解决(1062, "Duplicate entry 2019-08-30 for key rdate") 显然这个问题是因为插入重复主键导致从库不工作了,更改库的唯一限制: unique 为normal 或者删除unique ALTER TABLE 表明 DROP INDEX 字节名; 实例 CREATE TABLE good_booked (au…

人民币数字金额转大写金额

public class t {public static String Trans2RMB(String money) {int index money.indexOf(".");if (index < 0) {// 没有角分money money ".00";index money.indexOf(".");}if (money.substring(index, money.length()).length() < …

eventBus 与fragment

同一个eventbut是不可以注册两次的&#xff0c;所以我们会在ondestroy方法中进行unregister&#xff08;&#xff09; 但是在fragment中&#xff0c;最好把unregister&#xff08;&#xff09;方法写到 onDestroyView&#xff08;&#xff09;方法中而不是onDestrory&#xff0…

机器学习之线性代数总结

目录1、SVD是什么、表达式是什么及对应的数学含义&#xff1b;2、了解方阵、行列式的含义&#xff08;方阵即矩阵&#xff0c;行列式即矩阵的计算结果&#xff09;3、了解代数余子式的概念4、伴随矩阵的概念5、知道方阵的逆的公式、范德蒙行列式6、知道矩阵的乘法&#xff0c;掌…

Python操作MongoDB

一 安装 pymongo pip install pymongo3.4 ​ 导入 MongoClient from pymongo import MongoClient 二 连接MongoDB数据库 MongoDB端口号:27017 连接MongoDB我们需要使用PyMongo库里面的MongoClient&#xff0c;一般来说传入MongoDB的IP及端口即可&#xff0c;第一个参数为地…

各种插件

上下滚动抽奖效果, 移动端省级联动, 时间联动 , pc端省级联动 vue 支持各种方式上传 一个不太完善的拖拽排序 react 拖拽交换插件 各种小插件 压缩图片移动端 h5上传 h5分片上传 包括服务器 slideSuper 各种滑动效果 wow.js 转载于:https://www.cnblogs.com/dhsz/p/6377956.h…

MailBee.NET Objects发送电子邮件(SMTP)教程六:创建并发送带有附件的邮件

2019独角兽企业重金招聘Python工程师标准>>> MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持&#xff0c;简单高效。具备“必需”以及独特的功能&#xff0c;这些控件帮助开…

机器学习之凸优化原理推导及相关知识总结

文章目录目录1、了解凸集和仿射集的基本概念。2、知道几何体的向量表达。3、了解超平面和半空间的概念。4、了解分割超平面和支撑超平面的含义。5、知道jensen不等式。6、掌握知识&#xff1a;凸函数。7、掌握凸优化目录 1、了解凸集和仿射集的基本概念。 凸集&#xff1a;在…

jQuery BreakingNews 间歇滚动

BreakingNews 是一款基于jQuery的间歇滚动插件。它可以设置标题、标题颜色、标题背景颜色、链接颜色、字体大小、边框、宽度、自动滚动、间歇时间等等&#xff0c;同时它还好提供两种过度方式——淡入淡出&#xff08;fade&#xff09;和向上滑动&#xff08;slide&#xff09;…

机器学习之回归总结

目录1、了解线性回归2、了解似然函数3、了解交叉验证的原理4、梯度下降算法4.1、批量梯度下降算法&#xff08;Batch Gradient Descent&#xff0c;简称BGD&#xff09;&#xff1a;4.2、随机梯度下降算法&#xff08;SGD&#xff09;&#xff1a;4.3、折中&#xff1a; 5、了解…

html中的url、href、src的区别

url不是属性&#xff0c;src和href是属性&#xff0c;src用于替换当前元素&#xff0c;href用于在当前文档和引用资源之间确立联系&#xff0c;也就是说src引用的路径是img自己的路径&#xff0c;href引用的路径是要跳转到的地方。 URL&#xff1a;Uniform Resource Locators&…

SSIS 包部署错误 0xC0010014

SSIS 包部署错误 0xC0010014 Reinhard 在部署 SSIS 包时&#xff0c;提示如下错误。 由于错误 0xC0010014“发生了一个或多个错误。在此消息之前应有更为具体的错误消息&#xff0c;对这些错误进行详细说明。此消息用作遇到错误的函数的返回值。”&#xff0c;无法加载包。当 C…

Android性能优化-App后台优化

原文链接 Background Optimizations 前言 后台进程是内存和电池敏感的。一个隐式的broadcast可能会启动很多监听它的后台进程&#xff0c;即使这些进程可能做得工作不多。这可能丢设备性能和用户体验都有比较大的影响。 为了缓解这种问题&#xff0c;7.0&#xff08;API 24&…

机器学习之决策树与随机森林

目录1、了解熵、条件熵、互信息的概念及公式1.1、熵1.2、条件熵1.3、信息增益/互信息 2、了解决策树2.1、了解决策树的概念和特点以及和熵的关系2.2、了解树生成的过程2.3、了解决策树三种算法的区别2.4、了解决策树的损失函数2.5、了解解决决策树过拟合的方法2.6、了解后剪枝的…

JSON(JavaScript Object Notation) 格式

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。JSON采用完全独立于程序语言的文本格式&#xff0c;但是也使用了类C语言的习惯。 json是 JavaScript Object Notation 的首字母缩写&…

synchronized 的理解

第一种&#xff1a;package com.ucmed.zsyy.util;/*** Created by ucmed on 2017/2/8.*/public class DirtyRead {private String username "zjkj";private String password "123";public synchronized void setValue(String username, String password)…

机器学习之提升算法

1、知道提升、梯度提升是什么意思1.1、提升1.2、梯度提升1.3、了解提升算法的过程 2、残差与残差平方和&#xff08;residual sum of squares&#xff09;3、了解GBDT算法4、了解XGBoost算法5、了解Adaboost算法5.1、Adaboost算法的原理5.2、例子 6、偏差和方差 1、知道提升、梯…

Jsoup遍历ul li下的链接信息实例

2019独角兽企业重金招聘Python工程师标准>>> Document doc;try {String URL "www.baidu.com";doc Jsoup.connect(URL).get();Elements ElementsUl doc.getElementsByTag("ul");for (Element elementLi : ElementsUl) {Elements provinceEl …

两篇波兰地区重金属污染地区土壤微生物多样性的研究

环境微生物&#xff08;包括方兴未艾的肠道微生物&#xff09;在不同的系统中发挥着的生态作用逐渐被意识到&#xff0c;我们对环境微生物实际上仍旧知之甚少&#xff0c;其多样性问题仍旧是一个非常基础和重要的课题。这次读的两篇文章都是关于波兰地区重金属污染地区的土壤微…