4.4 MySQL存储

目录

1、使用前提

2、使用连接数据库最初步骤

2.1 最初步骤

2.2 connect()方法中参数简单传递

3、创建数据库(创建架构)和创建表

3.1 创建数据库(创建架构)

3.2 创建表

3.2.1 基本创建

3.2.2 创建自增主键

4、Pycharm 可视化连接 MySQL 图形界面

5、插入、更新、查询、删除数据

5.1 插入数据

5.2 、更新数据

5.3、查询数据

5.4、删除数据

6. MySQL存储字典

1、使用前提

        安装MySQL数据库,安装pymysql第三方库。

2、使用连接数据库最初步骤

2.1 最初步骤

(1) 声明一个连接对象。使用connect()方法声明一个连接对象conn,参数为数据库的一些信息。依次为主机名、用户名、密码、端口号;

(2) 获得游标。使用cursor()方法获得游标;

(3) 执行 sql 语句。使用execute()方法;

(4)关闭游标;

(5) 关闭连接。

以下代码对数据库进行了连接,执行语句,得到版本。

import pymysql# (1) 声明一个连接对象
conn = pymysql.connect(host='localhost', user='root', passwd='1141477238', port=3306)   # (2) 建立游标
cursor = conn.cursor()# (3) 执行语句        
sql = "SELECT VERSION()"
cursor.execute(sql)data = cursor.fetchone()    # fetchone()得到第一条数据
print('DataBase version:', data)cursor.close()            # (4) 关闭游标
conn.close()                # (5) 关闭连接# 输出:DataBase version: ('8.3.0',)

2.2 connect()方法中参数简单传递

        在上面可以看到connect()方法中参数很多,若要多次连接,每次一个个写或者复制比较繁琐,所以下面采取更方便的传递方法。

        建立一个新python文件mysql_info.py,将其中参数设置为字典,如下:

mysql_local = {'host': 'localhost','user': 'root','passwd': '1141477238','port': 3306,
}

        在主要文件中使用如下:

from mysql_info import mysql_local#.......
conn = pymysql.connect(**mysql_local)
#.......

        **mysql_local会将mysql_local字典中的键值对展开,作为关键字参数传递给pymysql.connect函数。

3、创建数据库(创建架构)和创建表

3.1 创建数据库(创建架构)

# 使用语句create database 数据库名
# 默认编码方式urf-8
sql = "create database spider default character set utf8mb4"

3.2 创建表

3.2.1 基本创建

        使用CREATE TABLE 表名(表头),此处为id,name,age。

import pymysqlconn = pymysql.connect(host='localhost', user='root',passwd='1141477238', port=3306, db='spider')
cursor = conn.cursor()
sql = ('CREATE TABLE IF NOT EXISTS student(id VARCHAR(255) NOT NULL, ''name VARCHAR(255) NOT NULL, ''age INT NOT NULL, ''PRIMARY KEY (id))')
cursor.execute(sql)
cursor.close()
conn.close()

        IF NOT EXISTS表明如果没有此表则创建该表,有则不会再创建表,即使改动后面的name、age等再执行一次,也不会有变化。若没有IF NOT EXISTS 在初始创建后再执行了一次该程序后再执行会报错,即存在表再创建会报错。

        NOT NULL表明不允许该键为空,否则报错。

3.2.2 创建自增主键

        该内容不与下方联系。

    sql = ('CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, ''username VARCHAR(50),''email VARCHAR(100))')

         该主键id会随着数据的增多而自增,再 insert 语句中不需要自己添加。(主键是用来唯一标识每一条记录的,如果没有主键或者主键值为空,就无法唯一标识记录,会容易导致插入失败。)

def insert_movie():conn = pymysql.connect(**mysql_local)cursor = conn.cursor()username = 'hhhhh'email = '1111111'sql = f'INSERT INTO users (username, email) VALUES (%s, %s)'cursor.execute(sql, (username, email))conn.commit()conn.close()

        结果如下(第一条为最先插入的,现插入第二条):

4、Pycharm 可视化连接 MySQL 图形界面

        在执行代码后观察。具体见链接http://t.csdnimg.cn/ZYZoQ

        根据上述代码,我们可以看到我们的数据库spider,点击表student,发现如下图所示:

        即建表成功,可以开始之后的操作。

5、插入、更新、查询、删除数据

5.1 插入数据

        使用insert into 表名(表头元素) values (%s, %s, %s),之后execute()中传入参数,再比最初步骤多了一个连接提交conn.commit()即可。

        为了避免插入失败导致报错崩溃程序,加一层异常处理。若插入失败,则执行conn.rollback(),会发生数据回滚,相当于没插入这条数据。之后执行后面的程序。

import mysql# 插入数据
conn = pymysql.connect(host='localhost', user='root',passwd='1141477238', port=3306, db='spider')
cursor = conn.cursor()
id = '10001'
name = 'John'
age = 20
sql = 'insert into student(id, name, age) values (%s, %s, %s)'
try:cursor.execute(sql, (id, name, age))conn.commit()
except:conn.rollback()print("插入失败")
cursor.close()
conn.close()

5.2 、更新数据

        使用update 表明 set 要改变量名 = %s where id = %s(id为定位变量)

# 改id为10001的age
sql = 'update student set age = %s where id = %s'
cursor.execute(sql, (25, '10001'))

5.3、查询数据

        使用select * from 表名 where 条件"。执行后结果返回再游标对象里,使用fetchall()方法返回所有符合条件的结果。

初表:

# 查询数据
conn = pymysql.connect(host='localhost', user='root',passwd='1141477238', port=3306, db='spider')
cursor = conn.cursor()
sql = "select * from student where age >= 25"
cursor.execute(sql)
result = cursor.fetchall()
print(result)

执行代码结果:

5.4、删除数据

        改变 sql 语句即可,使用delete from 表名 where 条件即可

import mysqlconn = pymysql.connect(host='localhost', user='root',passwd='1141477238', port=3306, db='spider')
cursor = conn.cursor()
sql = "delete from student where age >= 25 "
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()

6. MySQL存储字典

        在上述发现表格数据id,name,age等要一个个写入比较麻烦,所以接下来介绍一个以字典的方式把数据存入MySQL。

        主要是将字典的键值拆开,分别合并为字符串,去对应 sql 语句中的内容,之后将excute()方法中的第二个参数设置为元组即可。

import pymysql
from mysql_info import mysql_local    # 插入数据此文件中要加入'db': '数据库名'data = {'id': '10005','name': 'HaLun','age': 26
}
table_name = 'student'
conn = pymysql.connect(**mysql_local)
cursor = conn.cursor()keys = ','.join(data.keys())    
s_value = ','.join(['%s'] * len(data))sql = f"INSERT INTO {table_name}({keys}) VALUES ({s_value})"
print(sql)    # 输出:INSERT INTO student(id,name,age) VALUES (%s,%s,%s)
print(tuple(data.values()))    # 输出:('10005', 'HaLun', 26)cursor.execute(sql, tuple(data.values()))
conn.commit()
cursor.close()
conn.close()

本人新手,若有错误,欢迎指正;若有疑问,欢迎讨论。若文章对你有用,点个小赞鼓励一下,谢谢,一起加油吧!

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

*ctf 2019 oob

diff文件如下 diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc index b027d36..ef1002f 100644 --- a/src/bootstrapper.ccb/src/bootstrapper.cc-1668,6 1668,8 void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,Builtins::kArrayProto…

信号完整性分析基本概念

“设计师可以分成两类&#xff0c;一类已经遇到了信号完整性问题&#xff0c;另一类即将遇到信号完不整性问题” 随着时钟频率的提高&#xff0c;发现并解决信号完整性问题成为产品开发的关键。因此需要精通信号完整性分析技术&#xff0c;并能采取高效设计过程以消除这些问题…

SD-WAN案例:总部(MPLS)与分支(普通宽带)的互联互通

某制造业企业面临着总部采用MPLS专线而分支机构使用普通宽带的网络互联挑战。这种情况下&#xff0c;如何降低网络成本&#xff0c;提高网络效率成为当前亟需解决的问题。本文将介绍该企业如何通过部署SD-WAN实现互联互通。 网络痛点及需求分析&#xff1a; 该企业主要痛点包括…

【Vue3】插槽使用和animate使用

插槽使用 插槽slot匿名插槽具名插槽插槽作用域简写 动态插槽transition动画组件自定义过渡class类名如何使用animate动画库组件动画生命周期appear transition- group过渡列表 插槽slot 插槽就是子组件中提供给父组件使用的一个占位符父组件可以在这个占位符智能填充任何模板代…

数字化转型导师坚鹏:省级政府数字化转型案例研究

省级政府数字化转型案例研究 课程背景&#xff1a; 很多省级政府存在以下问题&#xff1a; 不清楚省级政府数字化转型的政务服务类成功案例 不清楚省级政府数字化转型的社会管理类成功案例 不清楚省级政府数字化转型的数字机关类成功案例 不清楚省级政府数字化转型的…

【MATLAB源码-第148期】基于matlab的BP神经网络2/4ASK,2/4FSK,2/4PSK信号识别仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 调制技术基础 调制技术是通信技术中的基础&#xff0c;它允许数据通过无线电波或其他形式的信号进行传输。调制可以根据信号的振幅、频率或相位的变化来进行&#xff0c;分别对应于ASK、FSK和PSK。 1.1 2ASK与4ASK 振幅…

LeetCode 0235.二叉搜索树的最近公共祖先:用搜索树性质(不遍历全部节点)

【LetMeFly】235.二叉搜索树的最近公共祖先&#xff1a;用搜索树性质&#xff08;不遍历全部节点&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/ 给定一个二叉搜索树, 找到该树中两个指定节点的最近公…

代码随想录算法刷题训练营day23

代码随想录算法刷题训练营day23&#xff1a;LeetCode(669)修剪二叉搜索树、LeetCode(108)将有序数组转换为二叉搜索树、LeetCode(538)把二叉树转化为累加树 LeetCode(669)修剪二叉搜索树 题目 代码 /*** Definition for a binary tree node.* public class TreeNode {* …

装配行业如何通过MES系统实现生产管理数字化

一、装配行业生产现状&#xff1a; 装配行业作为我国基础制造产业之一&#xff0c;在工厂数字化改造的大潮下&#xff0c;运用数字化手段提高企业的生产效率、产品良率&#xff0c;进一步塑造企业的核心竞争力&#xff0c;已成为大势所趋。 我国目前的装配企业&#xff0c;生…

项目实战:Qt监测操作系统cpu温度v1.1.0(支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136277231 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

数据可视化引领智慧仓储新时代

随着科技的飞速发展&#xff0c;数据可视化已然成为智慧仓储领域的璀璨明珠&#xff0c;其强大的功能和多面的作用让智慧仓储焕发出勃勃生机。让我们一同探索&#xff0c;数据可视化究竟在智慧仓储中起到了怎样的作用。下面我就以可视化从业者的角度来简单谈谈这个话题。 在这…

啤酒:精酿啤酒与烧烤的热烈碰撞

在夏日的傍晚&#xff0c;烧烤与啤酒总是绝配。当Fendi Club啤酒遇上烧烤&#xff0c;它们将为我们带来一场热烈的美味碰撞。 Fendi Club啤酒&#xff0c;以其醇厚的口感和淡淡的麦芽香气而著称。这款啤酒在酿造过程中采用了特别的工艺&#xff0c;使得酒体呈现出诱人的金黄色&…

R语言【rgbif】——occ_search()的start和limit参数的配合使用,以及索引的认识

Package rgbif version 3.7.8 occ_search()的参数start和参数limit配合使用&#xff0c;可以在检索的记录超过 10&#xff0c;000条时&#xff0c;获取后面的记录。 根据occ_search()的函数帮助文档&#xff0c;参数start的默认值为0。这是一个在R语言中比较敏感的数字。它可能…

数据结构知识点总结-绪论 数据结构基本术语 算法及评价

要求 &#xff08;1&#xff09;对数据结构这么课学了哪些知识有个清楚的认知&#xff1b; &#xff08;2&#xff09;掌握目录结构&#xff0c;能复述出来每个知识点下都有哪些内容。 如下图所示&#xff0c;可自行制作思维导图&#xff0c;针对自己薄弱的地方进行复习。 …

3款黑科技软件,却常被错认是微软开发,纯国产的它功能逆天

美丽的外表往往大同小异&#xff0c;而实用的软件却是难得一遇的珍品。尤其是最后一款国产软件&#xff0c;尽管许多人都在使用&#xff0c;但却常常因为误解而闹出笑话。 1、PhotoDemon 这款由国外技术专家开发的免费、开源图片编辑工具&#xff0c;体积小巧&#xff0c;仅需…

019 Spring Boot+Vue 电影院会员管理系统(源代码+数据库+文档)

部分代码地址&#xff1a; https://github.com/XinChennn/xc019-cinema 一、系统介绍 cinema项目是一套电影院会员管理系统&#xff0c;使用前后端分离架构开发包含管理员、会员管理、会员卡管理、电影票、消费记录、数据统计等模块 二、所用技术 后端技术栈&#xff1a; …

xss-跨站脚本攻击漏洞

前备知识&#xff1a; Cookie和Session是Web开发中用于维持用户状态、跟踪用户会话的核心技术&#xff0c;它们的主要目的是在无状态的HTTP协议基础上实现有状态的用户交互。 **Cookie**&#xff1a; - Cookie是一种由服务器发送到客户端&#xff08;通常是用户的浏览器&#x…

Ansys携手DXOMARK共同开发突破性的虚拟摄像头系统验证解决方案

改进的简化、集成式的工作流程助力摄像头系统光学性能的提升。 主要亮点 ✔ Ansys联合DXOMARK率先将可靠的虚拟摄像头系统验证解决方案推向市场 ✔ Ansys Lumerical™、Ansys Zemax OpticStudio™和Ansys Speos™可创建能够生成RAW图的工作流程。生成的RAW图可通过DXOMARK…

【快刊合集】中科院2区SCI,Elsevier出版社,仅2个月录用!

【SciencePub学术】 1 计算机智能类SCI&#xff08;高质量/分区上升&#xff09; 【期刊简介】IF&#xff1a;6.5-7.0&#xff0c;JCR1区&#xff0c;中科院2区 【出版社】Elsevier出版社 【版面类型】正刊&#xff0c;仅5篇版面 【检索情况】SCIE在检&#xff0c;预计3个…

如何在Linux搭建MinIO服务并实现无公网ip远程访问内网管理界面

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…