Python中对数据库的操作详解

目录
  • 一、数据库介绍
    • 1、为什么要学习数据库
    • 2、数据库的介绍
  • 二、MySQL介绍
    • 安装MySQL
    • 使用数据库
      • 1、语法格式
      • 2、简单示例
  • 三、查看数据库
    • 查看MySQL中存在的数据库
  • 四、简单示例

一、数据库介绍

1、为什么要学习数据库

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

2、数据库的介绍

定义

数据库(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,达到了修改数据库名称的效果。

到此这篇关于Python中对数据库的操作详解的文章就介绍到这了,更多相关Python数据库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 一文教会你用python连接并简单操作SQLserver数据库

    目录 实验环境: 基本步骤: 安装pymssql模块 编写代码 错误1: 报错 原因 错误2: 总结 实验环境: python版本3.9 Python 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" fo

  • Python创建SQL数据库流程逐步讲解

    目录 前言 先决条件 创建脚本 建立连接 创建表格 生成一些随机数据 结论 前言 根据<2021年Stackoverflow开发者调查>, SQL是最常用的五种编程语言之一. 所以,我们应该多投入时间来学习SQL. 由Storyset绘制的人物插图 但是有一个问题: 如何在没有数据库的情况下练习数据库查询呢? 在今天的文章中,让我们一起来解决这个基本问题,学习如何从零开始创建自己的MySQL数据库.在Python和一些外部库的帮助下,我们将创建一个简单的脚本,可以自动创建并使用随机生成的数据,

  • Python数据库sqlite3图文实例详解

    目录 前言 sqlite3数据库 1.需要的模块(只有一个) 2.模块的使用 2.1创建与数据库的连接 2.2创建游标 2.3创建 table 2.4插入数据 2.5查找数据 快乐的coding时间! 最后 前言 提到数据库,大家第一时间想到的可能是 sql 数据库,这种数据库非常好用,但是对于新手就不是很容易上手,需要熟悉一段时间才可以大概掌握.这种数据库在大型的项目开发过程中用到的地方不会很多,但是一些普通的项目还是很实用的,大大减少了代码量. sqlite3数据库 sqlite3 数据库是

  • Python实现MySql数据库交互的示例

    目录 一.使用MySql进行持久化存储 二.安装MySql数据库和Python库PyMySQL 三.使用pymysql链接mysql数据库 四.创建表 五.插入数据 六.后记 一.使用MySql进行持久化存储 在任何应用中,都需要持久化存储.一般有 3 种基础的存储机制:文件.数据库系统以及一些混合类型.这种混合类型包括现有系统上的 API. ORM.文件管理器.电子表格.配置文件等. 对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是当文件或创建的数据存储系统不适用于大项目时,我

  • Python使用Flask Migrate模块迁移数据库

    目录 前言 安装 初始化 项目结构 三大命令 前言 本篇文章,阐述一下Flask中数据库的迁移 为什么要说数据库迁移呢? 比如我们以前有一个数据库,里面的信息有 id, name现在我想再加一个gender属性,应该怎么办呢?不可能直接把数据库删除掉吧.然后重新创建一个,因此本文介绍一种,通过数据库迁移的方法,可以保留原始的数据,并完成添加新的一列的方法. 安装 直接使用pip install flask-migrate即可 初始化 项目结构 # exts.py from flask_sqlal

  • Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】

    本文实例讲述了Python开发SQLite3数据库相关操作.分享给大家供大家参考,具体如下: '''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不存在的时候 连接对象会自动创建数据库文件:如果数据库文件已经存在,则连接对象不会再创建 数据库文件,而是直接打开该数据库文件. 连接对象可以是硬盘上面的数据库文件,也可以是建立在内存中的,在内存中的数据库

  • Python中xlsx文件转置操作详解(行转列和列转行)

    目录 1.原始数据是这样的 2.脚本如下: 3.运行脚本后生成的xlsx文件,如下: 附:pivot方法即可完成行转列哦 总结 1.原始数据是这样的 2.脚本如下: import pandas as pd df = pd.read_excel(r'E:\untitled1\带宽测试\temp.xlsx') # 读取需要转置的文件 df = df.T # 转置 df.to_excel(r'E:\untitled1\带宽测试\TestResult.xlsx') # 另存为xlsx文件 3.运行脚本后

  • Python中列表的常用操作详解

    目录 打印出列表的数据 一.列表的循环遍历 1.for循环遍历 2.while循环遍历 二.列表的添加操作 1.append() 2.extend() 3.insert() 三.列表的修改操作 四.列表的查找 1.in 2.not in 3.index 4.count 五.列表中的删除 1.del 2.pop 3.remove 六.列表的排序操作 1.排序sort() 2.reverse方法是将内容顺序反转 总结 列表的格式:变量A的类型为列表 namesList = ['xiaoWang','

  • Python Numpy中数组的集合操作详解

    我们知道两个 set 对象之间,可以取交集.并集.差集.对称差集,举个例子: s1 = {1, 2, 3} s2 = {2, 3, 4} """ &: 交集 |: 并集  -: 差集 ^: 对称差集 """ # 以下几种方式是等价的 # 但是一般我们都会使用操作符来进行处理,因为比较方便 print(s1 & s1) print(s1.intersection(s2)) print(set.intersection(s1, s2)

  • Python 中迭代器与生成器实例详解

    Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的所有元素,但是不想用for循环 解决方案:使用next()函数,并捕获StopIteration异常 def manual_iter(): with open('/etc/passwd') as f: try: while True: line=next(f) if line is None: br

  • python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 = "hello bei jing " name2 = '''hello shang hai haha''' python中的字符串一旦声明,是不能进行更改的,如下: #字符串为不可变变量,即不能通过对某一位置重新赋值改变内容 name = 'hello' name[0] = 'k' #通

  • Python中协程用法代码详解

    本文研究的主要是python中协程的相关问题,具体介绍如下. Num01–>协程的定义 协程,又称微线程,纤程.英文名Coroutine. 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元. 为啥说他是一个执行单元,因为他自带CPU上下文.这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程. 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的. Num02–>协程和线程的差异 那么这个过程看起来和线程差不多.其实不然, 线程切换从系统层面远不止保存和恢复 CP

  • python中的decimal类型转换实例详解

    [Python标准库]decimal--定点数和浮点数的数学运算 作用:使用定点数和浮点数的小数运算.         Python 版本:2.4 及以后版本 decimal 模块实现了定点和浮点算术运算符,使用的是大多数人所熟悉的模型,而不是程序员熟悉的模型,即大多数计算机硬件实现的 IEEE 浮点数运算.Decimal 实例可以准确地表示任何数,对其上取整或下取整,还可以对有效数字个数加以限制. Decimal 小数值表示为 Decimal 类的实例.构造函数取一个整数或字符串作为参数.使用

  • Python 中Pickle库的使用详解

    在"通过简单示例来理解什么是机器学习"这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 那么为什么需要序列化和反序列化这一操作呢? 1.便于存储.序列化过程将文本信息转变为二进制数据流.这样就信息就容易存储在硬盘之中,当需要读取文件的时候,从硬盘中读取数据,然后再将其反序列化便可以得到原始的数据.在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据.python模块大全中的Pickle模块就派

  • Python中捕获键盘的方式详解

    python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN  and event.key =pygame.K_RIGHT:        print('向右移动') 第二种方法: 使用pygame中的key模块 1,使用pygame.key.get_pressed()返回一个包含键盘中所有按键的元组,元组用一个变量接收.如: keys_pressed = pygame.ke

随机推荐