Python中對(duì)數(shù)據(jù)庫的操作詳解
一、數(shù)據(jù)庫介紹
1、為什么要學(xué)習(xí)數(shù)據(jù)庫
通常,我們存儲(chǔ)數(shù)據(jù),直接用本地文件即可,但是,本地文件不利于存放海量數(shù)據(jù),也不利于用程序?qū)ξ募臄?shù)據(jù)進(jìn)行查詢與管理,那么為了解決這些弊端,才有數(shù)據(jù)庫的出現(xiàn),那么數(shù)據(jù)庫也是每個(gè)程序員比須掌握的計(jì)數(shù)。
2、數(shù)據(jù)庫的介紹
定義
數(shù)據(jù)庫(database)簡稱DB,是加上就是一個(gè)文件集合,是一個(gè)存儲(chǔ)數(shù)據(jù)的倉庫,本質(zhì)就是一個(gè)文件系統(tǒng),數(shù)據(jù)庫膳食按照特定的格式吧數(shù)據(jù)存儲(chǔ)起來,用戶可以對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行增刪改查操作
存儲(chǔ)數(shù)據(jù)特點(diǎn)
持久化存儲(chǔ)
讀寫速度極高
保證數(shù)據(jù)的優(yōu)先性
對(duì)程序支持非常好,容易擴(kuò)展
數(shù)據(jù)庫的分類
關(guān)系型數(shù)據(jù)庫:可以保存現(xiàn)實(shí)生活中的各種關(guān)系數(shù)據(jù),數(shù)據(jù)庫中存儲(chǔ)數(shù)據(jù)以表為單位,主流關(guān)系型數(shù)據(jù)庫:MySQL,Oracle,SQLServer等
非關(guān)系數(shù)據(jù)庫:通常用來解決某些特定的需求,比如高并發(fā)訪問,主流非關(guān)系型數(shù)據(jù)庫:Redis,Mongodb,memacache等
二、MySQL介紹
MySQL 是最流行的 RDBMS,即關(guān)系數(shù)據(jù)庫管理系統(tǒng),在 Web 方面應(yīng)用廣泛。數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉庫,每個(gè)數(shù)據(jù)庫都有一個(gè)或多個(gè)不同的 API 用于創(chuàng)建,訪問,管理,搜索和復(fù)制所保存的數(shù)據(jù)。對(duì)于用戶來說,我們可以把數(shù)據(jù)庫當(dāng)作一個(gè)黑盒子,使用 RDBMS 聽得懂的語言(也就是 SQL)進(jìn)行交流,即可對(duì)數(shù)據(jù)庫進(jìn)行增刪改查(CRUD)操作。
同時(shí),作為一款廣泛應(yīng)用的數(shù)據(jù)庫產(chǎn)品,除了直接使用 SQL 進(jìn)行操作之外,MySQL 還為廣大用戶提供了 C、C++、Python、Java、php、C# 等等多種編程語言的操作接口。下面我們就來看看如何通過 Python3 對(duì) MySQL 數(shù)據(jù)庫進(jìn)行操作。
安裝MySQL
大家可能在 Python2.x 中用的是 mysqldb,但是在 Python3.x 中已經(jīng)不支持這個(gè)組件了,取而代之的是 pymysql。
pip install PyMySQL
使用數(shù)據(jù)庫
1、語法格式
創(chuàng)建數(shù)據(jù)庫的語法格式如下:
CREATE DATABASE database_name
2、簡單示例
首先,在CentOS 6.8服務(wù)器上登錄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命令行中查看當(dāng)前MySQL中存在的數(shù)據(jù)庫。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.04 sec)
可以看到,此時(shí)只有4個(gè)MySQL自帶的數(shù)據(jù)庫,分別是information_schema、mysql、performance_schema和sys。
在MySQL命令行中使用CREATE DATABASE database_name語句創(chuàng)建名稱為goods的商品數(shù)據(jù)庫。
mysql> CREATE DATABASE goods; Query OK, 1 row affected (0.02 sec)
從MySQL輸出的結(jié)果信息中可以看出,名稱為goods的商品數(shù)據(jù)庫創(chuàng)建成功。
此時(shí),查看MySQL中存在的數(shù)據(jù)庫。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | goods | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
可以看到,此時(shí)MySQL中多了名稱為goods的數(shù)據(jù)庫。
三、查看數(shù)據(jù)庫
在MySQL中查看數(shù)據(jù)庫包含:查看MySQL中存在的數(shù)據(jù)庫、查看MySQL當(dāng)前命令行所在的數(shù)據(jù)庫、查看MySQL中具體某個(gè)數(shù)據(jù)庫的創(chuàng)建信息等。
查看MySQL中存在的數(shù)據(jù)庫
在MySQL命令行輸入如下命令:
mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | goods | +------------+ 1 row in set (0.00 sec)
MySQL命令行當(dāng)前所在的數(shù)據(jù)庫為goods。接下來將MySQL命令行所在的數(shù)據(jù)庫切換為mysql。
mysql> USE mysql; Database changed
再次查看MySQL命令行所在的數(shù)據(jù)庫。
mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | mysql | +------------+ 1 row in set (0.00 sec)
此時(shí)MySQL命令行所在的數(shù)據(jù)庫變?yōu)閙ysql。
四、簡單示例
查看goods數(shù)據(jù)庫的創(chuàng)建信息。
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)
可以看出,創(chuàng)建名稱為goods的數(shù)據(jù)庫時(shí),使用的字符編碼為utf8mb4,使用的校對(duì)規(guī)則為utf8mb4_0900_ai_ci,DEFAULT ENCRYPTION='N'表示默認(rèn)沒有使用MySQL的加密技術(shù)。
修改數(shù)據(jù)庫名稱
在MySQL 5.1.7版本中提供了修改數(shù)據(jù)庫名稱的SQL語句,語法格式如下:
RENAME DATABASE db_name TO new_db_name
但是從MySQL 5.1.23版本之后,就將此SQL語句去掉了,原因是此SQL語句可能會(huì)造成數(shù)據(jù)丟失。
雖然MySQL沒有直接提供修改數(shù)據(jù)庫名稱的SQL語句,但是,可以通過其他方式達(dá)到修改MySQL數(shù)據(jù)庫名稱的效果。
通過重命名數(shù)據(jù)表修改數(shù)據(jù)庫名稱
(1)在MySQL中創(chuàng)建數(shù)據(jù)庫test_old,并在test數(shù)據(jù)庫中創(chuàng)建名稱為table_test的數(shù)據(jù)表。
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)
注意:有關(guān)數(shù)據(jù)表和存儲(chǔ)引擎的知識(shí),在后續(xù)章節(jié)中會(huì)詳細(xì)介紹,這里為了演示修改數(shù)據(jù)庫的操作,先簡單創(chuàng)建一個(gè)測試表。
(2)查看名稱為test_old數(shù)據(jù)庫下的數(shù)據(jù)表。
mysql> SHOW TABLES; +--------------------+ | Tables_in_test_old | +--------------------+ | table_test | +--------------------+ 1 row in set (0.00 sec)
可以看到,test_old數(shù)據(jù)庫下存在table_test數(shù)據(jù)表,說明table_test數(shù)據(jù)表創(chuàng)建成功。
(3)在MySQL命令行創(chuàng)建test_new數(shù)據(jù)庫。
mysql> CREATE DATABASE IF NOT EXISTS test_new; Query OK, 1 row affected (0.01 sec)
(4)重命名數(shù)據(jù)表。將test_old數(shù)據(jù)庫下的數(shù)據(jù)表重命名到test_new數(shù)據(jù)庫下。
mysql> RENAME TABLE test_old.table_test TO test_new.table_test; Query OK, 0 rows affected (0.00 sec)
(5)刪除test_old數(shù)據(jù)庫。
mysql> DROP TABLE IF EXISTS test_old; Query OK, 0 rows affected, 1 warning (0.00 sec)
(6)查看test_new數(shù)據(jù)庫下存在的數(shù)據(jù)表。
mysql> USE test_new; Database changed mysql> SHOW TABLES; +--------------------+ | Tables_in_test_new | +--------------------+ | table_test | +--------------------+ 1 row in set (0.00 sec)
可以看到,table_test數(shù)據(jù)表所在的數(shù)據(jù)庫由原來的test_old變成了test_new,達(dá)到了修改數(shù)據(jù)庫名稱的效果。
到此這篇關(guān)于Python中對(duì)數(shù)據(jù)庫的操作詳解的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
drf-router和authenticate認(rèn)證源碼分析
在 Rest Framework 中提供了兩個(gè) router , 可以幫助我們快速的實(shí)現(xiàn)路由的自動(dòng)生成,本文通過實(shí)例代碼給大家介紹drf-router和authenticate認(rèn)證源碼分析,感興趣的朋友跟隨小編一起看看吧2021-07-07python中tkinter的應(yīng)用:修改字體的實(shí)例講解
今天小編就為大家分享一篇python中tkinter的應(yīng)用:修改字體的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07基于Python的socket庫實(shí)現(xiàn)通信功能的示例代碼
本文主要給大家介紹了如何使用python的socket庫實(shí)現(xiàn)通信功能,這里簡單的給每個(gè)客戶端增加一個(gè)不重復(fù)的uid,客戶端之間可以根據(jù)這個(gè)uid選擇進(jìn)行廣播通信,感興趣的小伙伴快來看看吧2023-08-08python排序函數(shù)sort()與sorted()的區(qū)別
這篇文章主要介紹了python排序函數(shù)sort()與sorted()的區(qū)別,需要的朋友可以參考下2018-09-09基于Python編寫一個(gè)刷題練習(xí)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何基于Python語言編寫一個(gè)簡單的刷題練習(xí)系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02Python2和Python3讀取文本文件的區(qū)別及說明
這篇文章主要介紹了Python2和Python3讀取文本文件的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02使用Python給Excel工作表設(shè)置背景色或背景圖
Excel是工作中數(shù)據(jù)處理和分析數(shù)據(jù)的重要工具,面對(duì)海量的數(shù)據(jù)和復(fù)雜的表格,如何提高工作效率、減少視覺疲勞并提升數(shù)據(jù)的可讀性是不容忽視的問題,而給工作表設(shè)置合適的背景是表格優(yōu)化的一個(gè)有效方式,本文將介紹如何用Python給Excel工作表設(shè)置背景色或背景圖2024-07-07