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 pymysql

conn = 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 mysql

conn = 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()

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

centos升级g++.v6.1.0版本

1.下载源码包 wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.gz tar -zxvf gcc-6.1.0.tar.gz cd gcc-6.1.0 2.打开 download_prerequisites 脚本 vim contrib/download_prerequisites 可以看到该文件就是执行一些下载指令,需要下载几个包&#xff0c…

适合新手博主站长使用的免费响应式WordPress博客主题JianYue

这款JianYue主题之所以命名为 JianYue,意思就是简单而不简约的。是根据Blogs主题优化而成,剔除了一些不必要的功能及排版,仅保留一种博客布局,让新手站长能够快速手上WordPress。可以说这款主题比较适合新手博主站长使用&#xff…

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

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

比创达元启新程 共创新佳绩:2023年度总结暨迎新年晚会圆满收官!

新的一年,万象更新。回顾2023年,我们携手走过的岁月,喜悦伴着汗水,成功伴着艰辛,遗憾激励奋斗。在过去的一年时间里,每个行业都经历着前所未有的变革与困难。我们比创达人也凭借着人心齐泰山移的团结之力&a…

智能SQL生成:后端技术与LLM的完美结合

文章目录 引言一、什么是大模型二、为什么选择LLM三、开发技术说明四、系统架构说明五、编码实战1. Maven2. 讯飞大模型配置类3. LLM相关的封装4. 编写LLM的service5. 编写controller6. 运行测试 六、总结 引言 本篇文章主要是关于实现一个类似Chat2DB的根据自然语言生成SQL的…

产品经理应该具备的基本意识(3)团灭意识(字幕)

1 00:00:01,040 --> 00:00:02,440 下一个基本意识 2 00:00:02,450 --> 00:00:05,310 我们就要有一个团灭意识 3 00:00:06,320 --> 00:00:09,070 我们在软件方法第二章的时候也说过 4 00:00:09,080 --> 00:00:11,580 就是说,我们做需求的时候 5 00:0…

【Java程序设计】【C00307】基于Springboot的基Hadoop的物品租赁管理系统(有论文)

基于Springboot的基Hadoop的物品租赁管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的基于 Hadoop的物品租赁系统的设计与实现,本系统有管理员、用户二种角色权限; 前台首页&#…

输电线路微波覆冰监测装置助力电网应对新一轮寒潮

2月19日起,湖南迎来新一轮寒潮雨雪冰冻天气。为做好安全可靠的供电准备,国网国网湘潭供电公司迅速启动雨雪、覆冰预警应急响应,采取“人巡机巡可视化巡视”的方式,对输电线路实施三维立体巡检。该公司组织员工对1324套通道可视化装…

[力扣 Hot100]Day38 翻转二叉树

题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 出处 思路 先序遍历,无脑翻转。 代码 class Solution { private:void invert(TreeNode* root){if(!root) return;TreeNode* p root->left;root->left …

自动化部署证书 acme.sh 使用教程

简介 acme.sh 是一个开源的 ACME 协议的客户端工具,用于自动化申请、更新和部署 SSL/TLS 证书。通过使用 acme.sh,用户可以轻松地在服务器上设置 HTTPS 加密连接,而无需手动操作。它支持多种 DNS 接口和证书颁发机构,可以与各种 …

逆向茶话会笔记

安卓逆向 用用burp设置代理或者用charles抓包 windows httpopen 类比web站点渗透测试 推荐书 飞虫 安卓大佬不怎么打ctf 喜欢在看雪和吾爱破解 提问环节 q websocket grpc抓包有什么推荐的工具? a 不太了解 游戏安全和llvm 既要逆游戏也要逆外挂 逆游戏入…

机器学习——线性代数中矩阵和向量的基本介绍

矩阵和向量的基本概念 矩阵的基本概念(这里不多说,应该都知道) 而向量就是一个特殊的矩阵,即向量只有一列,是个n*1的矩阵 注:一般矩阵用大写字母表示,向量用小写字母表示 矩阵的加减运算 两个…

SpringCloud-Docker原理解析

Spring Cloud和Docker的结合为微服务架构的部署和管理提供了强大的支持。本文深入剖析Spring Cloud与Docker的集成原理,从服务注册与发现、配置管理、负载均衡到容器化部署等方面展开详细解析。探讨Spring Cloud如何利用Docker容器技术实现服务的弹性伸缩&#xff0…

GitHub上的GCN

在GitHub上下载GCN代码,可以跑通 https://github.com/tkipf/pygcn

力扣用例题:2的幂

此题的解题方法在于根据用例调整代码 bool isPowerOfTwo(int n) {if(n1){return true;}if(n<0){return false;}while(n>2){if(n%21){return false;}nn/2; }if(n1){return false;}return true;}

Windows系统搭建Elasticsearch引擎结合内网穿透实现远程连接查询数据

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎&#xff0c;它提供了一个分布式、多…

SQL Server添加用户登录

我们可以模拟一下让这个数据库可以给其它人使用 1、在计算机中添加一个新用户TeacherWang 2、在Sql Server中添加该计算机用户的登录权限 exec sp_grantlogin LAPTOP-61GDB2Q7\TeacherWang -- 之后这个计算机用户也可以登录数据库了 3、添加数据库的登录用户和密码&#xff0…

Docker安装MS SQL Server并使用Navicat远程连接

MS SQL Server简介 Microsoft SQL Server&#xff08;简称SQL Server&#xff09;是由微软公司开发的关系数据库管理系统&#xff0c;它是一个功能强大、性能卓越的企业级数据库平台&#xff0c;用于存储和处理大型数据集、支持高效查询和分析等操作。SQL Server 支持广泛的应…

回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机…

MySQL认证方法介绍

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; MySQL数据库的认证方法对于确保数据安全和维护系统完整性至关重要。在MySQL中&#xff0c;有多种认证方法可供选择&#xff0c;每种方法都有其特定的用途和配置方式。本文将详细…