自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用Python連接MySQL數(shù)據(jù)庫(kù)?

開(kāi)發(fā) 后端
數(shù)據(jù)分析離不開(kāi)數(shù)據(jù)庫(kù),如何使用python連接數(shù)據(jù)庫(kù)呢?聽(tīng)我娓娓道來(lái)哈!

該筆記參考了PyMySQL官方文檔和《python數(shù)據(jù)采集》關(guān)于數(shù)據(jù)存儲(chǔ)的部分,歡迎大家去閱讀原著,相信會(huì)理解的更加透徹。 

補(bǔ)充:文末增加Oracle數(shù)據(jù)庫(kù)的連接方式,大同小異。

背景:

我是在Anaconda notebook中進(jìn)行連接實(shí)驗(yàn)的,環(huán)境Python3.6,當(dāng)然也可以在Python Shell里面進(jìn)行操作。

最常用也最穩(wěn)定的用于連接MySQL數(shù)據(jù)庫(kù)的python庫(kù)是PyMySQL,所以本文討論的是利用PyMySQL連接MySQL數(shù)據(jù)庫(kù),以及如何存儲(chǔ)數(shù)據(jù)。 

下面開(kāi)始:

1、安裝PyMySQL庫(kù)

最簡(jiǎn)單的方式:在命令行輸入 pip install pymysql

或者:下載whl文件進(jìn)行安裝,安裝過(guò)程自行百度。

2、安裝MySQL數(shù)據(jù)庫(kù)

MySQL數(shù)據(jù)庫(kù)類型有兩種:MySQL和MariaDB,我用的是后者M(jìn)ariaDB。

兩者在絕大部分性能上是兼容的,使用起來(lái)感覺(jué)不到啥區(qū)別。

給出下載地址:MySQL,MariaDB,安裝過(guò)程很簡(jiǎn)單,一路Next Step,不過(guò)要記好密碼。

有個(gè)小插曲,MySQL和MariaDB相當(dāng)于姐姐妹妹的關(guān)系,兩者由同一個(gè)人(Widenius)創(chuàng)建的。MySQL被Oracle收購(gòu)后,Widenius先生覺(jué)得不爽,于是搞了個(gè)MariaDB,可以完全替代MySQL。大牛就是任性。

3、SQL基本語(yǔ)法

下面要用SQL的表創(chuàng)建、查詢、數(shù)據(jù)插入等功能,這里簡(jiǎn)要介紹一下SQL語(yǔ)言的基本語(yǔ)句。

查看數(shù)據(jù)庫(kù):SHOW DATABASES;

創(chuàng)建數(shù)據(jù)庫(kù):CREATE DATEBASE 數(shù)據(jù)庫(kù)名稱;

使用數(shù)據(jù)庫(kù):USE 數(shù)據(jù)庫(kù)名稱;

查看數(shù)據(jù)表:SHOW TABLES;

創(chuàng)建數(shù)據(jù)表:CREATE TABLE 表名稱(列名1 (數(shù)據(jù)類型1),列名2 (數(shù)據(jù)類型2));

插入數(shù)據(jù):INSERT INTO 表名稱(列名1,列名2) VALUES(數(shù)據(jù)1,數(shù)據(jù)2);

查看數(shù)據(jù):SELECT * FROM 表名稱;

更新數(shù)據(jù):UPDATE 表名稱 SET 列名1=新數(shù)據(jù)1,列名2=新數(shù)據(jù)2 WHERE 某列=某數(shù)據(jù);

4、連接數(shù)據(jù)庫(kù)

安裝好必要得文件和庫(kù)后,接下來(lái)正式開(kāi)始連接數(shù)據(jù)庫(kù)吧,雖然神秘卻不難哦! 

  1. #首先導(dǎo)入PyMySQL庫(kù) 
  2. import pymysql 
  3. #連接數(shù)據(jù)庫(kù),創(chuàng)建連接對(duì)象connection 
  4. #連接對(duì)象作用是:連接數(shù)據(jù)庫(kù)、發(fā)送數(shù)據(jù)庫(kù)信息、處理回滾操作(查詢中斷時(shí),數(shù)據(jù)庫(kù)回到最初狀態(tài))、創(chuàng)建新的光標(biāo)對(duì)象 
  5. connection = pymysql.connect(host = 'localhost' #host屬性 
  6.                              user = 'root' #用戶名  
  7.                              password = '******'  #此處填登錄數(shù)據(jù)庫(kù)的密碼 
  8.                              db = 'mysql' #數(shù)據(jù)庫(kù)名 
  9.                              ) 

執(zhí)行這段代碼就連接好了!

5.使用python代碼操作MySQL數(shù)據(jù)庫(kù)

首先來(lái)查看一下有哪些數(shù)據(jù)庫(kù):

#創(chuàng)建光標(biāo)對(duì)象,一個(gè)連接可以有很多光標(biāo),一個(gè)光標(biāo)跟蹤一種數(shù)據(jù)狀態(tài)。

#光標(biāo)對(duì)象作用是:、創(chuàng)建、刪除、寫(xiě)入、查詢等等

cur = connection.cursor()

#查看有哪些數(shù)據(jù)庫(kù),通過(guò)cur.fetchall()獲取查詢所有結(jié)果

print(cur.fetchall())

打印出所有數(shù)據(jù)庫(kù):

(('information_schema',),

('law',),

('mysql',),

('performance_schema',),

('test',))

在test數(shù)據(jù)庫(kù)里創(chuàng)建表: 

  1. #使用數(shù)據(jù)庫(kù)test 
  2. cur.execute('USE test'
  3. #在test數(shù)據(jù)庫(kù)里創(chuàng)建表student,有name列和age列 
  4. cur.execute('CREATE TABLE student(name VARCHAR(20),age TINYINT(3))'

向數(shù)據(jù)表student中插入一條數(shù)據(jù): 

  1. sql = 'INSERT INTO student (name,age) VALUES (%s,%s)' 
  2. cur.execute(sql,('XiaoMing',23)) 

查看數(shù)據(jù)表student內(nèi)容: 

  1. cur.execute('SELECT * FROM student'
  2. print(cur.fetchone()) 

打印輸出為:('XiaoMing', 23)

Bingo!是我們剛剛插入的一條數(shù)據(jù)

最后,要記得關(guān)閉光標(biāo)和連接: 

  1. #關(guān)閉連接對(duì)象,否則會(huì)導(dǎo)致連接泄漏,消耗數(shù)據(jù)庫(kù)資源 
  2. connection.close() 
  3. #關(guān)閉光標(biāo) 
  4. cur.close() 

OK了,整個(gè)流程大致如此。當(dāng)然這里都是很基礎(chǔ)的操作,更多的使用方法需要在PyMySQL官方文檔里去尋找。

補(bǔ)充:

Oracle數(shù)據(jù)庫(kù)連接 

1、下載安裝外包c(diǎn)x_Oracle,方式:在命令行輸入 pip install cx_Oracle

2、連接 

  1. conn = oracle.connect('username/password@host:port/sid')#分別填用戶名/密碼/數(shù)據(jù)庫(kù)所在IP地址:port/sid 

3、獲取光標(biāo)對(duì)象curser 

  1. cur = conn.cursor() 

4、使用cursor進(jìn)行各種操作 

  1. cur.execute(sql語(yǔ)句)    

5、關(guān)閉cursur、conn 

  1. cursor.close() 
  2. conn.close() 

 【編輯推薦】

 

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2017-11-27 11:41:06

python數(shù)據(jù)庫(kù)數(shù)據(jù)分析

2024-01-02 08:47:42

2009-11-24 16:48:15

PHP mysqli

2010-05-14 11:12:16

連接MySql

2020-11-23 14:16:42

Golang

2017-09-11 19:30:44

MySQLCmd命令連接數(shù)據(jù)庫(kù)

2018-02-26 20:00:00

編程語(yǔ)言JavaMySQL

2009-06-01 09:57:43

netbeans連接數(shù)netbeans數(shù)據(jù)庫(kù)netbeans連接m

2009-07-07 14:56:33

JSP連接MySQL

2011-05-26 13:42:50

MFC連接MySql數(shù)據(jù)庫(kù)

2020-09-22 15:56:31

Java

2017-06-22 14:13:07

PythonMySQLpymysqlpool

2010-10-12 16:55:50

MYSQL命令行

2011-07-27 13:58:48

EclipseMySQL

2009-07-06 17:23:34

JDBC連接數(shù)據(jù)庫(kù)

2011-03-16 17:14:17

JavaBean數(shù)據(jù)庫(kù)

2010-06-07 15:24:34

Java連接MYSQL

2010-03-04 17:19:40

2009-01-19 09:14:31

.NETMySQLMySql驅(qū)動(dòng)包

2022-06-26 07:18:17

數(shù)據(jù)庫(kù)NodePostgreSQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)