Python全栈开发(五)——python数据库MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 今天简单说说MySQL,我们存储数据,直接用本地文件即可,但是,本地文件不利于存放海量数据,也不利于用程序对文件的数据进行查询与管理,我们可以使用数据库。

数据库

一、数据库介绍

(一)为什么要学习数据库?

通常,我们存储数据,直接用本地文件即可,但是,本地文件不利于存放海量数据,也不利于用程序对文件的数据进行查询与管理,那么为了解决这些弊端,才有数据库的出现,那么数据库也是每个程序员比须掌握的计数。


(二) 数据库的介绍

定义

数据库(database)简称DB,是加上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库膳食按照特定的格式吧数据存储起来,用户可以对存储的数据进行增删改查操作

存储数据特点


持久化存储

读写速度极高

保证数据的优先性

对程序支持非常好,容易扩展

数据库的分类


关系型数据库:可以保存现实生活中的各种关系数据,数据库中存储数据以表为单位,主流关系型数据库:MySQL,Oracle,SQLServer等

非关系数据库:通常用来解决某些特定的需求,比如高并发访问,主流非关系型数据库:Redis,Mongodb,memacache等


二、MySQL介绍

MySQL 是最流行的 RDBMS,即关系数据库管理系统,在 Web 方面应用广泛。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。对于用户来说,我们可以把数据库当作一个黑盒子,使用 RDBMS 听得懂的语言(也就是 SQL)进行交流,即可对数据库进行增删改查(CRUD)操作。


同时,作为一款广泛应用的数据库产品,除了直接使用 SQL 进行操作之外,MySQL 还为广大用户提供了 C、C++、Python、Java、php、C# 等等多种编程语言的操作接口。下面我们就来看看如何通过 Python3 对 MySQL 数据库进行操作。


安装MySQL

大家可能在 Python2.x 中用的是 mysqldb,但是在 Python3.x 中已经不支持这个组件了,取而代之的是 pymysql。

pip install PyMySQL


使用数据库

1.语法格式

创建数据库的语法格式如下:


CREATE DATABASE database_name


2.简单示例

首先,在CentOS 6.8服务器上登录MySQL。

[root@binghe150 ~]# mysql -uroot -p
  Enter password: 
  Welcome to the MySQL monitor.  Commands end with ; or \g.
  Your MySQL connection id is 13
  Server version: 8.0.18 binghe edition
  Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
  Oracle is a registered trademark of Oracle Corporation and/or its
  affiliates. Other names may be trademarks of their respective
  owners.
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  mysql>

接下来,在MySQL命令行中查看当前MySQL中存在的数据库。

mysql> SHOW DATABASES;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | sys                |
  +--------------------+
  4 rows in set (0.04 sec)

可以看到,此时只有4个MySQL自带的数据库,分别是information_schema、mysql、performance_schema和sys。

在MySQL命令行中使用CREATE DATABASE database_name语句创建名称为goods的商品数据库。

mysql> CREATE DATABASE goods;
  Query OK, 1 row affected (0.02 sec)

从MySQL输出的结果信息中可以看出,名称为goods的商品数据库创建成功。

此时,查看MySQL中存在的数据库。

mysql> SHOW DATABASES;
  +--------------------+
  | Database           |
  +--------------------+
  | goods              |
  | information_schema |
  | mysql              |
  | performance_schema |
  | sys                |
  +--------------------+
  5 rows in set (0.00 sec)

可以看到,此时MySQL中多了名称为goods的数据库。


查看数据库

在MySQL中查看数据库包含:查看MySQL中存在的数据库、查看MySQL当前命令行所在的数据库、查看MySQL中具体某个数据库的创建信息等。


查看MySQL中存在的数据库

在MySQL命令行输入如下命令:


mysql> SELECT DATABASE();
  +------------+
  | DATABASE() |
  +------------+
  | goods      |
  +------------+
  1 row in set (0.00 sec)

MySQL命令行当前所在的数据库为goods。接下来将MySQL命令行所在的数据库切换为mysql。

mysql> USE mysql;
  Database changed

再次查看MySQL命令行所在的数据库。

mysql> SELECT DATABASE();
  +------------+
  | DATABASE() |
  +------------+
  | mysql      |
  +------------+
  1 row in set (0.00 sec)

此时MySQL命令行所在的数据库变为mysql。


简单示例

查看goods数据库的创建信息。

mysql> SHOW CREATE DATABASE goods;
  +-------+----------------------------------------------------------------------------------------+
  |Database|Create Database                                                                         |
  +-------+----------------------------------------------------------------------------------------+
  | goods  | CREATE DATABASE `goods` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci 
             *//*!80016 DEFAULT ENCRYPTION='N' */                                                 |
  +-------+----------------------------------------------------------------------------------------+
  1 row in set (0.00 sec)

或者:

mysql> SHOW CREATE DATABASE goods \G
  *************************** 1. row ***************************
         Database: goods
  Create Database: CREATE DATABASE `goods` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_
  0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
  1 row in set (0.00 sec)

可以看出,创建名称为goods的数据库时,使用的字符编码为utf8mb4,使用的校对规则为utf8mb4_0900_ai_ci,DEFAULT ENCRYPTION='N'表示默认没有使用MySQL的加密技术。


修改数据库名称

在MySQL 5.1.7版本中提供了修改数据库名称的SQL语句,语法格式如下:


RENAME DATABASE db_name TO new_db_name


但是从MySQL 5.1.23版本之后,就将此SQL语句去掉了,原因是此SQL语句可能会造成数据丢失。


虽然MySQL没有直接提供修改数据库名称的SQL语句,但是,可以通过其他方式达到修改MySQL数据库名称的效果。


通过重命名数据表修改数据库名称


(1)在MySQL中创建数据库test_old,并在test数据库中创建名称为table_test的数据表。

mysql> CREATE DATABASE IF NOT EXISTS test_old;
  Query OK, 1 row affected (0.01 sec)
  mysql> USE test_old;
  Database changed
  mysql> CREATE TABLE IF NOT EXISTS table_test(id int);   
  Query OK, 0 rows affected (0.01 sec)

注意:有关数据表和存储引擎的知识,在后续章节中会详细介绍,这里为了演示修改数据库的操作,先简单创建一个测试表。

(2)查看名称为test_old数据库下的数据表。

mysql> SHOW TABLES;
  +--------------------+
  | Tables_in_test_old |
  +--------------------+
  | table_test         |
  +--------------------+
  1 row in set (0.00 sec)

可以看到,test_old数据库下存在table_test数据表,说明table_test数据表创建成功。


(3)在MySQL命令行创建test_new数据库。

mysql> CREATE DATABASE IF NOT EXISTS test_new;
  Query OK, 1 row affected (0.01 sec)

(4)重命名数据表。将test_old数据库下的数据表重命名到test_new数据库下。


mysql> RENAME TABLE test_old.table_test TO test_new.table_test;
  Query OK, 0 rows affected (0.00 sec)

(5)删除test_old数据库。

mysql> DROP TABLE IF EXISTS test_old;
  Query OK, 0 rows affected, 1 warning (0.00 sec)

(6)查看test_new数据库下存在的数据表。

mysql> USE test_new;
  Database changed
  mysql> SHOW TABLES;
  +--------------------+
  | Tables_in_test_new |
  +--------------------+
  | table_test         |
  +--------------------+
  1 row in set (0.00 sec)

可以看到,table_test数据表所在的数据库由原来的test_old变成了test_new,达到了修改数据库名称的效果。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
23
分享
相关文章
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
107 1
抖音直播间采集提取工具,直播间匿名截流获客软件,Python开发【仅供学习】
这是一套基于Python开发的抖音直播间数据采集与分析系统,包含观众信息获取、弹幕监控及数据存储等功能。代码采用requests、websockets和sqlite3等...
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
61 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
156 20
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。
开发YashanDB数据库?用 DBeaver for YashanDB 更顺手
数据库开发复杂易错,尤其在企业级场景中。为提升效率,YashanDB 团队基于 DBeaver 开源工具打造专属解决方案——DBeaver for YashanDB。它支持多类型数据库对象管理(表、视图、函数等),适配 YashanDB 特有表结构(HEAP、LSC),提供智能补全、语法高亮、SQL 调试等功能,让开发更高效流畅。推荐用于数据库应用开发团队、高频调试用户及中大型企业统一工具栈场景。
基于Python+Vue开发的体育场馆预约管理系统源码+运行
本项目为大学生课程设计作业,采用Python和Vue技术构建了一个体育场馆预约管理系统(实现前后端分离)。系统的主要目标在于帮助学生理解和掌握Python编程知识,同时培养其项目规划和开发能力。参与该项目的学习过程,学生能够在实际操作中锻炼技能,为未来的职业发展奠定良好的基础。
108 3
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
173 1
【赵渝强老师】OceanBase数据库从零开始:MySQL模式
《OceanBase数据库从零开始:MySQL模式》是一门包含11章的课程,涵盖OceanBase分布式数据库的核心内容。从体系架构、安装部署到租户管理、用户安全,再到数据库对象操作、事务与锁机制,以及应用程序开发、备份恢复、数据迁移等方面进行详细讲解。此外,还涉及连接路由管理和监控诊断等高级主题,帮助学员全面掌握OceanBase数据库的使用与管理。
167 5
MySQL与Clickhouse数据库:探讨日期和时间的加法运算。
这一次的冒险就到这儿,期待你的再次加入,我们一起在数据库的世界中找寻下一个宝藏。
83 9

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问