溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Python玩轉MySQL數據庫

發布時間:2022-05-09 13:39:56 來源:億速云 閱讀:236 作者:zzz 欄目:大數據

這篇“如何使用Python玩轉MySQL數據庫”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何使用Python玩轉MySQL數據庫”文章吧。

一、背景

我是在Anaconda notebook中進行連接實驗的,環境Python3.6,當然也可以在Python Shell里面進行操作。

最常用也最穩定的用于連接MySQL數據庫的python庫是PyMySQL。

二、基本操作

1、安裝PyMySQL庫

最簡單的方式:

在命令行輸入 pip install pymysql

或者:

下載whl文件[1]進行安裝,安裝過程自行百度。

2、安裝MySQL數據庫

MySQL數據庫有兩種:

MySQLMariaDB

我用的是MariaDB,它是MySQL的一個分支。

兩者在絕大部分性能上是兼容的,使用起來感覺不到啥區別。

給出下載地址:MySQL[2],MariaDB[3],安裝過程很簡單,一路Next Step,不過要記好密碼。

有個小插曲,MySQL和MariaDB相當于姐姐妹妹的關系,兩者由同一個人(Widenius)創建的。

MySQL被Oracle收購后,Widenius先生覺得不爽,于是搞了個MariaDB,可以完全替代MySQL。

大牛就是任性。

3、SQL基本語法

下面要用SQL的表創建、查詢、數據插入等功能,這里簡要介紹一下SQL語言的基本語句。

  • 查看數據庫:SHOW DATABASES;

  • 創建數據庫:CREATE DATEBASE 數據庫名稱;

  • 使用數據庫:USE 數據庫名稱;

  • 查看數據表:SHOW TABLES;

  • 創建數據表:CREATE TABLE 表名稱(列名1 (數據類型1),列名2 (數據類型2));

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

  • 查看數據:SELECT * FROM 表名稱;

  • 更新數據:UPDATE 表名稱 SET 列名1=新數據1,列名2=新數據2 WHERE 某列=某數據;

4、連接數據庫

安裝好必要得文件和庫后,接下來正式開始連接數據庫吧,雖然神秘卻不難哦!

#首先導入PyMySQL庫
import pymysql
#連接數據庫,創建連接對象connection
#連接對象作用是:連接數據庫、發送數據庫信息、處理回滾操作(查詢中斷時,數據庫回到最初狀態)、創建新的光標對象
connection = pymysql.connect(host = 'localhost' #host屬性
                            user = 'root' #用戶名
                            password = '******'  #此處填登錄數據庫的密碼
                            db = 'mysql' #數據庫名
                            )

執行這段代碼就連接好了!

5、增刪改查操作

首先來查看一下有哪些數據庫:

#創建光標對象,一個連接可以有很多光標,一個光標跟蹤一種數據狀態。
#光標對象作用是:、創建、刪除、寫入、查詢等等
cur = connection.cursor()
#查看有哪些數據庫,通過cur.fetchall()獲取查詢所有結果
print(cur.fetchall())

打印出所有數據庫:

(('information_schema',),
('law',),
('mysql',),
('performance_schema',),
('test',))

在test數據庫里創建表:

#使用數據庫test
cur.execute('USE test')
#在test數據庫里創建表student,有name列和age列
cur.execute('CREATE TABLE student(name VARCHAR(20),age TINYINT(3))')

向數據表student中插入一條數據:

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

查看數據表student內容:

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

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

Bingo!是我們剛剛插入的一條數據

最后,要記得關閉光標和連接:

#關閉連接對象,否則會導致連接泄漏,消耗數據庫資源
connection.close()
#關閉光標
cur.close()

OK了,整個流程大致如此。

當然這里都是很基礎的操作,更多的使用方法需要在PyMySQL官方文檔[4]里去尋找。

三、導入大數據文件

以csv文件為例,csv文件導入數據庫一般有兩種方法:

1、通過SQL的insert方法一條一條導入,適合數據量小的CSV文件,這里不做贅述。

2、通過load data方法導入,速度快,適合大數據文件,也是本文的重點。

樣本CSV文件如下:

如何使用Python玩轉MySQL數據庫

總體工作分為3步:

1、用python連接mysql數據庫;

2、基于CSV文件表格字段創建表;

3、使用load data方法導入CSV文件內容。

sql的load data語法簡介:

LOAD DATA LOCAL INFILE 'csv_file_path' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES

csv_file_path 指文件絕對路徑 table_name指表名稱 FIELDS TERMINATED BY ','指以逗號分隔 LINES TERMINATED BY '\\r\\n'指換行 IGNORE 1 LINES指跳過第一行,因為第一行是表的字段名

下面給出全部代碼:

#導入pymysql方法
import pymysql


#連接數據庫
config = {:'',
         :3306,
         :'username',
         :'password',
         :'utf8mb4',
         :1
         }
conn = pymysql.connect(**config)
cur = conn.cursor()


#load_csv函數,參數分別為csv文件路徑,表名稱,數據庫名稱
def load_csv(csv_file_path,table_name,database='evdata'):
   #打開csv文件
   file = open(csv_file_path, 'r',encoding='utf-8')
   #讀取csv文件第一行字段名,創建表
   reader = file.readline()
   b = reader.split(',')
   colum = ''
   for a in b:
       colum = colum + a + ' varchar(255),'
   colum = colum[:-1]
   #編寫sql,create_sql負責創建表,data_sql負責導入數據
   create_sql = 'create table if not exists ' + table_name + ' ' + '(' + colum + ')' + ' DEFAULT CHARSET=utf8'
   data_sql = "LOAD DATA LOCAL INFILE '%s' INTO TABLE %s FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES" % (csv_filename,table_name)

   #使用數據庫
   cur.execute('use %s' % database)
   #設置編碼格式
   cur.execute('SET NAMES utf8;')
   cur.execute('SET character_set_connection=utf8;')
   #執行create_sql,創建表
   cur.execute(create_sql)
   #執行data_sql,導入數據
   cur.execute(data_sql)
   conn.commit()
   #關閉連接
   conn.close()
   cur.close()

以上就是關于“如何使用Python玩轉MySQL數據庫”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女