Python操作Mysql資料庫入門——查看和增加記錄

作者:王大偉 Python愛好者社區唯一小編,請勿轉載,謝謝。

出處:Python操作Mysql資料庫入門——查看和增加記錄

小編配套免費視頻教程:Hellobi Live | 破冰入門Python 課程內容:1、Anaconda安裝2、jupyter常用操作3、Python基本數據類型4、Python基本運算和表達式5、Python程序基本控制流程(順序,分支,循環)6、Python特色數據類型(列表,元組,字典,集合)7、Python函數8、Python模塊導入使用之time、random模塊9、Python異常處理10、Python文件操作 11、Python後續學習提升方向和建議

公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容

前言

最近學了一下sql,因為做數據分析不會sql真不行。

平時學的都是Python,所以如果要用pandas做數據分析,數據除了導入excel和csv文件,

應該還要會從資料庫中導入數據到Python中,於是我進行了以下的學習和探索。

環境

Python 3.X

IDE : juyter notebook

安裝必要的模塊

進入:

lfd.uci.edu/~gohlke/pyt

找到適合自己的版本

下載到本地(我的下載到e:盤根目錄)

然後打開cmd如下圖安裝

這裡推薦本地安裝

使用Python連接資料庫

import MySQLdbn

如果導入模塊沒報錯,恭喜你,安裝模塊成功了!

conn = MySQLdb.connect(n host = 127.0.0.1,#本地地址n user = root,#一般默認用戶名n passwd = ********,#本地資料庫登錄密碼n db = test,#資料庫名稱n port = 3306,#安裝mysql默認的埠號n charset = utf8#設置資料庫統一編碼n)n

通過connect方法連接本地mysql資料庫,這裡要注意你要修改的或許是登錄密碼和資料庫名稱

創建游標

首先,我們要創建一個游標

cursor = conn.cursor()n

什麼是游標呢?

游標就相當於一個緩衝區,存放暫時的結果(這是我的理解)

就像去超市買買買,你可能要推一個手推車,這裡的手推車就像游標,推著手推車去對應的貨架完成挑選操作,而手推車最終會在出超市時候清空

觀察資料庫

我本地的資料庫test中有個tdb_goods的表

表的內容如上圖所示

有商品的id,名稱,種類id,品牌id,是否在售和是否下架幾個欄位

一共有23條記錄

獲取數據

我們使用select語句可以獲取數據

cursor.execute(SELECT * FROM `tdb_goods`;)ndata = cursor.fetchone()#取一條數據nprint(data)n

首先我們用游標的execute方法執行一句sql語句獲取tdb_goods中的所有數據

然後使用游標的fetchone方法取出其中一條記錄並且展現出來

如上圖,我們取出的數據是元組形式

當然,我們應該養成打開後關閉的好習慣,所以,在操作結束,應該斷開與資料庫的連接

conn.close()n

異常處理

當我們在操作時,希望和在mysql資料庫中一樣,異常時會提示異常信息

那麼我們就要加入異常處理模塊

try:n conn = MySQLdb.connect(n host = 127.0.0.2222,n user = root,n passwd = ********,n db = test,n port = 3306,n charset = utf8n )nexcept MySQLdb.Error as e:n print(Error:%s % e)n

這裡異常時,就將異常的信息告知我們了

我們將以上代碼整理一下:

import MySQLdbnntry:n conn = MySQLdb.connect(n host = 127.0.0.1,n user = root,n passwd = ********,n db = test,n port = 3306,n charset = utf8n )n n cursor = conn.cursor()n cursor.execute(SELECT * FROM `tdb_goods`;)n data = cursor.fetchone()n print(data)n n conn.close()nnexcept MySQLdb.Error as e:n print(Error:%s % e)n

當我們將fetchone改成fetchall時候,就是取出所有信息了

使用面向對象編程

如果你熟悉面向對象編程或者看過我寫的面向對象編程入門系列(小姐姐系列)

傳送門:

Python面向對象編程從零開始(1)——從沒對象到有對象

Python面向對象編程從零開始(2)—— 與對象相互了解

Python面向對象編程從零開始(3)—— 小姐姐請客上篇

Python面向對象編程從零開始(4)—— 小姐姐請客下篇

Python面向對象編程從零開始(5)—— 小姐姐要買房

如果你還沒接觸過面向對象編程,看完以上5篇至少對接下來的內容理解上不存在問題

import MySQLdbnnclass Mysql(object):n n def __init__(self):n self.connect()n n def connect(self):nn try:n self.conn = MySQLdb.connect(n host = 127.0.0.1,n user = root,n passwd = ********,n db = test,n port = 3306,n charset = utf8n )n n except MySQLdb.Error as e:n print(Error:%s % e)nn def close_conn(self):n try:n if self.conn:n self.conn.close()n except MySQLdb.Error as e:n print(Error:%s % e) n n def get_a(self):n n sql = select * from `tdb_goods` where `cate_id` = %s; n cursor = self.conn.cursor()n cursor.execute(sql,(1,))n data = cursor.fetchone()n print(data)n cursor.close()n self.close_conn()n ndef main():n object = Mysql()n object.get_a()n nif __name__ == __main__:n main()n

註:這裡定義了一個類叫Mysql,然後用類創建一個對象名為object,在創建對象的時候,類的初始化時調用連接資料庫函數

創建了一個叫object的對象,使用對象的get_a方法從資料庫tdb_goods中選出cate_id=1的一條記錄,在get_a函數最後位置斷開資料庫連接

結果如下:

插入記錄到資料庫

import MySQLdbnnclass Mysql(object):n n def __init__(self):n self.connect()n n def connect(self):nn try:n self.conn = MySQLdb.connect(n host = 127.0.0.1,n user = root,n passwd = ********,n db = test,n port = 3306,n charset = utf8n )n n except MySQLdb.Error as e:n print(Error:%s % e)nn def close_conn(self):n try:n if self.conn:n self.conn.close()n except MySQLdb.Error as e:n print(Error:%s % e) n n def get_a(self):n n sql = select * from `tdb_goods` where `cate_id` = %s; n cursor = self.conn.cursor()n cursor.execute(sql,(1,))n data = cursor.fetchone()n print(data)n cursor.close()n self.close_conn()n n def add_a(self):n sql = "insert into `tdb_goods`(`goods_name`,`cate_id`,`brand_id`,`goods_price`,`is_show`,`is_saleoff`) value (%s,%s,%s,%s,%s,%s);"n cursor = self.conn.cursor()n cursor.execute(sql,(偉哥牌notebook,8,1,66666,1,0))n cursor.close()n self.close_conn()n ndef main():n object = Mysql()n object.add_a()n nif __name__ == __main__:n main()n

註:這裡,將一條記錄插入了資料庫,但是當我執行完這條語句(沒報錯)

刷新資料庫並沒有新增一條記錄

劃重點:在這裡,有一個self.conn.commit(),這個叫提交,如果不寫這句,就無法將所做修改保存的資料庫中

加上這個之後(加在以下兩句之間):

可以看到,數據成功寫入資料庫了~

如果運行代碼報錯,很可能是你的資料庫名和資料庫登錄密碼沒有修改~

文中如有錯誤和敘述不妥之處,望指正。

推薦閱讀:

MySQL學習筆記(二)索引與視圖
爬蟲的資料庫選型,redis, leveldb, mongodb, mysql 選哪個?
mysql是如何工作的?

TAG:Python | MySQL | 数据库 |