中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何使用Python玩轉(zhuǎn)MySQL數(shù)據(jù)庫

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

創(chuàng)新互聯(lián)公司專注于中大型企業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)和網(wǎng)站改版、網(wǎng)站營銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計客戶上千,服務(wù)滿意度達97%。幫助廣大客戶順利對接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運用,我們將一直專注品牌網(wǎng)站制作和互聯(lián)網(wǎng)程序開發(fā),在前進的路上,與客戶一起成長!

一、背景

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

最常用也最穩(wěn)定的用于連接MySQL數(shù)據(jù)庫的python庫是PyMySQL。

二、基本操作

1、安裝PyMySQL庫

最簡單的方式:

在命令行輸入 pip install pymysql

或者:

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

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

MySQL數(shù)據(jù)庫有兩種:

MySQLMariaDB

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

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

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

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

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

大牛就是任性。

3、SQL基本語法

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

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

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

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

  • 查看數(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ù)庫

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

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

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

5、增刪改查操作

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、導(dǎo)入大數(shù)據(jù)文件

以csv文件為例,csv文件導(dǎo)入數(shù)據(jù)庫一般有兩種方法:

1、通過SQL的insert方法一條一條導(dǎo)入,適合數(shù)據(jù)量小的CSV文件,這里不做贅述。

2、通過load data方法導(dǎo)入,速度快,適合大數(shù)據(jù)文件,也是本文的重點。

樣本CSV文件如下:

如何使用Python玩轉(zhuǎn)MySQL數(shù)據(jù)庫

總體工作分為3步:

1、用python連接mysql數(shù)據(jù)庫;

2、基于CSV文件表格字段創(chuàng)建表;

3、使用load data方法導(dǎo)入CSV文件內(nèi)容。

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指跳過第一行,因為第一行是表的字段名

下面給出全部代碼:

#導(dǎo)入pymysql方法
import pymysql


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


#load_csv函數(shù),參數(shù)分別為csv文件路徑,表名稱,數(shù)據(jù)庫名稱
def load_csv(csv_file_path,table_name,database='evdata'):
   #打開csv文件
   file = open(csv_file_path, 'r',encoding='utf-8')
   #讀取csv文件第一行字段名,創(chuàng)建表
   reader = file.readline()
   b = reader.split(',')
   colum = ''
   for a in b:
       colum = colum + a + ' varchar(255),'
   colum = colum[:-1]
   #編寫sql,create_sql負責(zé)創(chuàng)建表,data_sql負責(zé)導(dǎo)入數(shù)據(jù)
   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)

   #使用數(shù)據(jù)庫
   cur.execute('use %s' % database)
   #設(shè)置編碼格式
   cur.execute('SET NAMES utf8;')
   cur.execute('SET character_set_connection=utf8;')
   #執(zhí)行create_sql,創(chuàng)建表
   cur.execute(create_sql)
   #執(zhí)行data_sql,導(dǎo)入數(shù)據(jù)
   cur.execute(data_sql)
   conn.commit()
   #關(guān)閉連接
   conn.close()
   cur.close()

以上就是關(guān)于“如何使用Python玩轉(zhuǎn)MySQL數(shù)據(jù)庫”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前題目:如何使用Python玩轉(zhuǎn)MySQL數(shù)據(jù)庫
本文地址:http://www.rwnh.cn/article48/gpoihp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、響應(yīng)式網(wǎng)站、微信公眾號、網(wǎng)站制作標(biāo)簽優(yōu)化、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
象山县| 德兴市| 阳山县| 航空| 张家口市| 乐山市| 枣强县| 中宁县| 灵璧县| 惠州市| 鄂托克前旗| 栖霞市| 华坪县| 赤峰市| 革吉县| 上杭县| 新泰市| 安福县| 德保县| 浑源县| 汉阴县| 阳东县| 湄潭县| 盘山县| 淮滨县| 长子县| 高台县| 洱源县| 武穴市| 浦东新区| 巴里| 青神县| 庐江县| 新泰市| 喀什市| 广宁县| 伊通| 无为县| 纳雍县| 鄢陵县| 建昌县|