MySQL(七)——Python操作MySQL基础使用

上期文章

MySQL(六)——事务


文章目录

  • 上期文章
  • 数据库介绍
  • MySQL入门使用
  • SQL基础
    • SQL语言分类
    • SQL语法特征
  • DDL
  • DML
  • DQL
  • Python & MySQL
    • 基础使用
      • 总结
    • 数据插入
      • 手动commit
      • 自动commit
      • 总结
  • 综合案例


数据库介绍

数据库是指数据存储的库,作用就是组织数据并存储数据

按照库->表->数据 三个层级进行组织

数据库(软件)提供数据组织存储的能力

SQL语句则是操作数据、数据库的工作语言

MySQL入门使用

打开命令提示符程序,输入mysql -u root -p

  • show databases 查看有哪些数据库
  • use 数据库名 使用某个数据库
  • show tables 查看数据库内有哪些表
  • exit 退出MySQL的命令行环境

SQL基础

SQL语言分类

SQL:Structured Query Language,结构化查询语言,用于访问和处理数据库的标准的计算机语言

  • 数据定义 DDL Data Definition Language:库的创建删除、表的创建删除等
  • 数据操纵 DML Data Manipulation Language:新增数据、删除数据、修改数据等
  • 数据控制 DCL Data Control Language:新增用户、删除用户、密码修改、权限管理等
  • 数据查询 DQL Data Query Language:基于需求查询和计算数据

SQL语法特征

  • SQL语言大小写不敏感
  • SQL可以单行或多行书写,最后以;号结束
  • 单行注释:-- 注释内容(–后面一定要有一个空格)
  • 单行注释:# 注释内容(#后面可以不加空格,推荐加上)
  • 多行注释:/* 注释内容 */

DDL

-- 查看数据库
SHOW DATABASES;
-- 使用数据库
USE 数据库名称;
-- 创建数据库 字符集UTF8
CREATE DATABASE 数据库名称 [CHARSET UTF8];
-- 删除数据库
DROP DATABASE 数据库名称;
-- 查看当前使用的数据库
SELECT DATABASE();
-- 查看有哪些表
SHOW TABLES;
-- 删除表
DROP TABLE 表名称;
DROP TABLE IF EXISTS 表名称;
-- 创建表
CREATE TABLE 表名称(列名称 列类型,列名称 列类型,......
);

列类型有
int:整数
float:浮点数
varchar(长度):文本,长度为数字,做最大长度限制
date:日期类型
timestamp:时间戳类型

DML

/*数据添加*/
INSERT INTO[(1,2, ..., 列N)] VALUES(1,2,..., 值N)[,(1,2,..., 值N), ..., (1,2,..., 值N)]
/*数据删除*/
DELETE FROM 表名称 [WHERE 条件判断];
/*数据更新*/
UPDATE 表名 SET=[WHERE 条件判断];

DQL

/*基础数据查询*/
SELECT 字段列表|* FROM;
/*过滤查询的语法*/
SELECT 字段列表|* FROMWHERE 条件判断;
/*分组聚合*/
SELECT 字段|聚合函数 FROM[WHERE 条件] GROUP BY/*结果排序*/
SELECT|聚合函数|* FROMWHERE ...
GROUP BY ...
ORDER BY ...[ASC|DESC]
/*结果分页限制*/
SELECT|聚合函数|* FROMWHERE ...
GROUP BY ...
ORDER BY ...[ASC|DESC]
LIMIT n[, m]

聚合函数:

  • SUM 列 求和
  • AVG 列 求平均值
  • MIN 列 求最小值
  • MAX 列 求最大值
  • COUNT 列|* 求数量

注意:GROUP BY出现哪个列,哪个列才能出现在SELECT中的非聚合中

执行顺序:FROM->WHERE->GROUP BY和聚合函数->SELECT->ORDER BY->LIMIT

Python & MySQL

基础使用

创建到MySQL的数据库链接

from pymysql import Connection
# 获取到MySQL数据库的链接对象
conn = Connection(host='localhost',   # 主机名/IP地址port=3306,  # 端口,默认3306user='root',    # 账户名password='SYQ1338751!'  # 密码
)
# 打印MySQL数据库软件信息
# print(conn.get_server_info())# 获取游标对象
cursor = conn.cursor()# 先选择数据库
conn.select_db('test') # 使用游标对象,执行非查询性质的sql语句
cursor.execute('create table test_pymysql(id int, info varchar(255))')# 使用游标对象,执行查询性质的sql语句
cursor.execute('select * from student')
# 获取查询结果
results: tuple = cursor.fetchall()
for r in results:\print(r)# 关闭到数据库的链接
conn.close()

总结

1、如何获取链接对象?

  • from pymysql import Connection 导包
  • Connection(主机,端口,账户,密码)即可得到链接对象
  • 链接对象.close()关闭和MySQL数据库的连接

2、如何执行SQL查询?

通过连接对象调用cursor()方法,得到游标对象

  • 游标对象.execute()执行SQL语句
  • 游标对象.fetchall()得到全部的查询结果封装入元组内

数据插入

pymysql在执行数据插入或其他产生数据更改的SQL语句时,默认是需要提交更改的,即需要通过代码“确认”这种更改行为

手动commit

通过链接对象.commit()即可确认此行为

from pymysql import Connection
# 获取到MySQL数据库的链接对象
conn = Connection(host='localhost',   # 主机名/IP地址port=3306,  # 端口,默认3306user='root',    # 账户名password='SYQ1338751!'  # 密码
)
# 打印MySQL数据库软件信息
# print(conn.get_server_info())# 获取游标对象
cursor = conn.cursor()# 先选择数据库
conn.select_db('itheima')  # 执行sql
cursor.execute("insert into account values (3, '王五', 2000)")# 通过commit提交确认
conn.commit()# 关闭到数据库的链接
conn.close()

自动commit

conn = Connection(host='localhost',   # 主机名/IP地址port=3306,  # 端口,默认3306user='root',    # 账户名password='SYQ1338751!',  # 密码autocommit=True  # 设置自动提交
)

总结

1、什么是commit提交?
pymysql库在执行对数据库所有修改操作的行为时,是需要通过链接对象的commit成员方法来进行确认的

只有确认的修改,才能生效

2、如何自动提交呢?

conn = Connection(host='localhost',   # 主机名/IP地址port=3306,  # 端口,默认3306user='root',    # 账户名password='SYQ1338751!',  # 密码autocommit=True  # 设置自动提交
)

综合案例

from file_define import *
from data_define import *
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
from pyecharts.faker import Faker
from pymysql import Connectiontext_file_reader = TextFileReader('2011年1月销售数据.txt')
json_file_reader = JsonFileReader('2011年2月销售数据JSON.txt')jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()
# 两个月份的数据合并为一个list存储
all_data: list[Record] = jan_data + feb_data# 获取到MySQL数据库的链接对象
conn = Connection(host='localhost',   # 主机名/IP地址port=3306,  # 端口,默认3306user='root',    # 账户名password='SYQ1338751!',  # 密码autocommit=True  # 设置自动提交
)# 获取游标对象
cursor = conn.cursor()
# 先选择数据库
conn.select_db('py_sql')
# 组织SQL语句
for record in all_data:sql = f"insert into orders(order_date, order_id, money, province) values ('{record.date}','{record.order_id}', {record.money}, '{record.province}')"# 执行SQl语句cursor.execute(sql)# 关闭MySQL链接对象
conn.close()
import decimalfrom file_define import *
from data_define import *
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
from pyecharts.faker import Faker
from pymysql import Connection
import jsonfrom datetime import date, datetimefrom datetime import date, datetimeclass ComplexEncoder(json.JSONEncoder):def default(self, obj):if isinstance(obj, datetime):return obj.strftime('%Y-%m-%d %H:%M:%S')elif isinstance(obj, date):return obj.strftime('%Y-%m-%d')else:return json.JSONEncoder.default(self, obj)text_file_reader = TextFileReader('2011年1月销售数据.txt')
json_file_reader = JsonFileReader('2011年2月销售数据JSON.txt')jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()
# 两个月份的数据合并为一个list存储
all_data: list[Record] = jan_data + feb_data# 获取到MySQL数据库的链接对象
conn = Connection(host='localhost',   # 主机名/IP地址port=3306,  # 端口,默认3306user='root',    # 账户名password='SYQ1338751!',  # 密码autocommit=True  # 设置自动提交
)# 获取游标对象
cursor = conn.cursor()
# 先选择数据库
conn.select_db('py_sql')
# 组织SQL语句
# for record in all_data:
#     sql = f"insert into orders(order_date, order_id, money, province) values ('{record.date}','{record.order_id}', {record.money}, '{record.province}')"
#     # 执行SQl语句
#     cursor.execute(sql)# 使用游标对象,执行查询性质的sql语句
cursor.execute('select * from orders')
# 获取查询结果
results: tuple = cursor.fetchall()
results_list = list(results)
print(results_list)with open('example.json.txt', 'w') as f:for item in results_list:a = {}a['date'] = item[0]a['order_id'] = item[1]a['money'] = item[2]a['province'] = item[3]r_json = json.dumps(a, cls=ComplexEncoder, ensure_ascii=False)f.write(r_json+'\n')# 关闭MySQL链接对象
conn.close()

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

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

相关文章

5. 函数调用过程汇编分析

函数调用约定 __cdecl 调用方式 __stdcall 调用方式 __fastcall 调用方式 函数调用栈帧分析 补充说明 不同的编译器实现不一样,上述情况只是VC6.0的编译实现即便是在同一个编译器,开启优化和关闭优化也不一样即便是同一个编译器同一种模式,3…

光催化专用设备太阳光模拟器装置

什么是光催化材料? 光催化材料是指通过该材料、在光的作用下发生的光化学反应所需的一类半导体催化剂材料。半导体是一种介于导体和绝缘体之间的物质,它有一个特殊的能带结构,即价带和导带之间有一个禁带,禁带的宽度决定了半导体…

Day37 贪心算法 part06 738. 单调递增的数字 968. 监控二叉树

贪心算法 part06 738. 单调递增的数字 968. 监控二叉树 738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strNum to_string(n);int tag strNum.size();for(int i strNum.size()-1; i>1; i--){if(strNum[i]<strNum[i-1]){…

04.Timer应用

Timer应用与源码 1.Timer介绍 java.util包下提供了对定时任务的支持&#xff0c;在JDK很早的版本就支持了&#xff0c;但是由于一些问题被逐渐淘汰了&#xff0c;现在建议使用ScheduledThreadPoolExecutor来代替Timer 2.Timer使用Demo /*** description: 测试Timer* author…

linux压缩包形式安装mysql5.7

1. 下载 MySQL 压缩包 在官方网站或者镜像站下载 MySQL 压缩包。mysql-5.7.29-linux-glibc2.12.tar 下载地址&#xff1a; MySQL :: Download MySQL Community Server (Archived Versions) 2. 解压缩文件 使用以下命令解压 MySQL 压缩包&#xff1a; tar xvf mysql-5.7.29…

C++ 类和对象 知识笔记

C 类和对象 知识笔记 1、类和对象 C面向对象的三大特征为&#xff1a;封装、继承、多态 C认为万事万物都皆为对象&#xff0c;对象上有其属性和行为 例如 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重…&#xff0c;行为有走、跳、跑、吃饭、唱歌…。 1.1、封装…

软考高项论文范文 | 进度管理

2017年5月&#xff0c;受某政府部门的委托&#xff0c;我单位承接了某信息共享与服务系统的建设工作&#xff0c;在本项目中我担任项目经理&#xff0c;负责项目的整体规划、组织实施和管理控制。某政府部门拥有多年积累的大量工作资源&#xff0c;这些信息是其开展各项行业服务…

南南合作里程碑!批量苏州金龙纯电公交正式交付哥斯达黎加

1月17日&#xff0c;哥斯达黎加电力研究所&#xff08;ICE&#xff09;收到了中国援助的批量苏州金龙海格纯电公交&#xff0c;该批车是中国应对气候变化南南合作援助哥斯达黎加项目的重要物资之一。中国驻哥斯达黎加特命全权大使汤恒出席交付仪式。 中国驻哥斯达黎加大使汤恒&…

esp8266小车智能wifi小车寒假营实战背篼酥老师

esp8266小车智能wifi小车寒假营实战 10节课 整车效果图如下 第一课 esp8266开发环境搭建和库文件加载 课程如下&#xff1a; 环境搭建 库文件下载链接&#xff1a;见文章末尾 第二课 小车模块组成和例程简介 课程如下&#xff1a; 车身PCB 小车电机 esp8266扩展板 esp8…

Flink实战之DataStream API

接上文&#xff1a;Flink实战之运行架构 Flink的计算功能非常强大&#xff0c;提供的应用API也非常丰富。整体上来说&#xff0c;可以分为DataStreamAPI&#xff0c;DataSet API 和 Table与SQL API三大部分。 其中DataStream API是Flink中主要进行流计算的模块。 DateSet API是…

vue3-组件通信

1. 父传子-defineProps 父组件&#xff1a; <script setup> import { ref } from vueimport SonCom from /components/Son-com.vueconst message ref(parent)</script><template><div></div><SonCom car"沃尔沃" :message"…

ctfshow-反序列化(web267-web270)

目录 web267 web268 web269 web270 总结 web267 页面用的什么框架不知道 看源码看一下 框架就是一种软件工具&#xff0c;它提供了一些基础功能和规范&#xff0c;可以帮助开发者更快地构建应用程序。比如Yii框架和ThinkPHP框架就是两个流行的PHP框架&#xff0c;它们提供…

Golang 中如何实现 Set

在Go编程中&#xff0c;数据结构的选择对解决问题至关重要。本文将探讨如何在 GO 中实现 set 和 bitset 两种数据结构&#xff0c;以及它们在Go中的应用场景。 Go 的数据结构 Go 内置的数据结构并不多。工作中&#xff0c;我们最常用的两种数据结构分别是 slice 和 map&#…

如何本地安装Python Flask并结合内网穿透实现远程开发

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

flutter 实现定时滚动的公告栏的两种不错方式

相同的部分 自定义一个类继承StatefulWidget 所有公告信息存放在list里 第一种 scrollControllerAnimatedContainer 逻辑如下 我们可以发现启动了一个timer计时器计时5秒&#xff0c;hasClients检查其目标对象&#xff08;我们用的是listview&#xff09;是否被渲染&#x…

HarmonyOS鸿蒙应用开发(三、轻量级配置存储dataPreferences)

在应用开发中存储一些配置是很常见的需求。在android中有SharedPreferences&#xff0c;一个轻量级的存储类&#xff0c;用来保存应用的一些常用配置。在HarmonyOS鸿蒙应用开发中&#xff0c;实现类似功能的也叫首选项&#xff0c;dataPreferences。 相关概念 ohos.data.prefe…

【操作系统】实验一 Linux操作系统安装

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

Simulink之Signal

Simulink.Signal 指定信号的属性 描述 此类使您能够创建工作区对象,用于分配或验证信号或离散状态的属性,如其数据类型、数字类型、维度等。您可以使用信号对象来: 将值指定给信号源未指定的信号属性(值为-1或auto)。 验证其值由信号源显式指定的信号属性。此类属性的…

2017年认证杯SPSSPRO杯数学建模B题(第二阶段)岁月的印记全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 B题 岁月的印记 原题再现&#xff1a; 对同一个人来说&#xff0c;如果没有过改变面容的疾病、面部外伤或外科手术等经历&#xff0c;年轻和年老时的面容总有很大的相似性。人们在生活中也往往能够分辨出来两张不同年龄段的照片是不是同一个人…

FPGA物理引脚,原理(Pacakge and pinout)-认知3

画FPGA芯片引脚封装图&#xff08;原理&#xff09;&#xff0c;第一是参考开发板(根据一下描述了解总览&#xff09;&#xff0c;第二是研究Datasheet. ASCII Pinout File Zynq-7000 All Programmable SoC Packaging and Pinout(UG585) 1. Pacakge overview 1.1&#xff0…