pymysql使用心得記錄

2021-07-29 13:26:57 字數 3056 閱讀 9876

(該記錄對應文章《豆瓣電影top250基本資訊抓取》)

折騰了將近兩天才把mysql資料庫功能給實現了。

經過這兩天的實踐,發現了自己的很多知識點漏洞。尤其是資料編碼型別。每次要想實現把資料存入txt或其他文字檔案,都要花費好長時間,雖然大致實現思路很清晰,但是總是會遇到很多細枝末節的障礙,基礎不牢啊。

說說從昨天到現在一直折騰pymysql的經歷吧。(腦袋很混亂。估計下文會更紊亂。。。。)。不過如果你能堅持看完,絕對會有收穫,沒有的話你來找我(反正你也找不到)

首先是最簡單的pymysql.connect()語句的實現就耗了我大半天的時間。

ortant;">

db = pymysql.connect(host="localhost",user="root",password="123456",db="doubanmovie",charset="utf8") 

就是這麼簡單的一行**。。。簡直蠢哭了

我一直以為 user 和 password 兩項是隨便填的。。隨便。。填。。的。。。

所以我付出了慘痛代價,mysql軟體安裝了三四次,電腦重啟無數次。。。最後才慢慢悟出了真理,原來他們是我在安裝mysql的時候自己設定的。

另外我要提醒一下小夥伴們,如果你安裝mysql只是為了學習的話,建議密碼不要太複雜,否則你會後悔的,相信我,恩。

ortant;">

db = pymysql.connect(host="localhost",user="root",password="123456",db="doubanmovie",charset="utf8") 

上面這行**中申明了資料庫是doubanmovie,能這麼寫的前提是你已經提前建立了這個名為doubanmovie的資料庫,否則。。。崩。。報錯,別問我是怎麼知道的。

好了,資料庫的建立問題已經解決,那麼接下來就是資料表的建立了。**很簡單,我輕輕鬆鬆的就寫出來了(傲嬌臉)

ortant;">

cursor.execute("create

table movie(name text, star text, quote

text, info text)")

但就是這麼簡單的語句也有很多坑。這並不是說這個語句有錯,而是它對後面程式的除錯很麻煩。因為這個語句執行一次後,如果再執行顯然就會報錯。你問為什麼?因為已經存在名為movie的資料表了啊。所以我為了測試資料,就得反反覆覆的把這個語句注釋掉。

ortant;">

cursor.execute("create

table

ifnot

exists movie(name text, star text, quote

text, info text)")

第三個bug就是資料插入操作。

這是浪費時間最長的過程,中途差點想放棄了,不過幸好堅持住了~~

具體的原因牽扯到**,源頭很長就不解釋了,不過有興趣的可以看看**。

值得一提的是在這個過程中學到了乙個很棒的用法(在牛人看來肯定很一般,但是這個辦法確實解決了我的問題)。

就是插入語句,我們都知道插入語句是

ortant;">

insert

into 表名(變數名 資料型別) values(......); 

我要插入的內容存放在字典中,所以最開始的辦法超級原始,但不知道為什麼就是不行(明明邏輯是對的).廢話不多說看栗子:

假如我的資料存放在movies列表(list)裡,資料存放在字典(dict)裡

ortant;">

movies = [ 

資料處理,執行插入操作

為行文方便,**有所簡略

ortant;">

db = pymysql.connect(host="localhost",user="root",password="123456",db="doubanmovie",charset="utf8") 

cursor = db.cursor() 

for movie in sort_movies: 

star = movie["star"] 

name = movie["name"] 

info = movie["info"] 

quote = movie["quote"] 

sql = "insert into movie(star,name,info,quote) values('%s', '%s', '%s', '%s');" % (star, name, info, quote) 

try: 

cursor.execute(sql) 

db.commit() 

print("資料插入成功\n*************\n") 

except exception as e: 

raise e 

db.close()  

以前的原始方法是

ortant;">

sql = "insert into movie(star,name,info,quote) values(" + r'"' + star + r'","' + name + r'","'+ info + r'","'+ quote + r'",")'

經查stackoverflow,得到如下解決辦法(上面**中已呈現)

ortant;">

sql = "insert into movie(star,name,info,quote) values('%s', '%s', '%s', '%s');" % (star, name, info, quote) 

這個可以很好的生成mysql執行語句。

stackoverflow的回答中有的人建議把上面**中的 % 改為 ,,具體啥原因參見stackoverflow python mysql statement returning error

還有得記得加上這行**

ortant;">

db.commit() 

往後版本希望擴充套件的功能:

視覺化資料

干巴爹!!!!!

大家也可以在我的部落格

pymysql使用心得記錄

該記錄對應文章 豆瓣電影top250基本資訊抓取 折騰了將近兩天才把mysql資料庫功能給實現了。經過這兩天的實踐,發現了自己的很多知識點漏洞。尤其是資料編碼型別。每次要想實現把資料存入txt或其他文字檔案,都要花費好長時間,雖然大致實現思路很清晰,但是總是會遇到很多細枝末節的障礙,基礎不牢啊。說說...

Qt 學習記錄 執行緒使用心得

c 建立執行緒有很多辦法和輪子,qt也提供幾種。過一段時間不用就會淡忘,然後去找別人的分享。乾脆自己記錄下。看documentation以及其他人分享的教程加上自己日常使用的理解,如果錯誤請指正。qt 學習記錄 執行緒使用 繼承qthread,重寫run函式 壞處 如果執行緒很多的話建立和刪除開銷很...

frameset 使用心得

欲明白本篇 html徹底剖析 之標記分類,請看 標記一覽 也請先明白圍堵標記與空標記的分別,請看 html概念 框架概念 謂框架便是網頁畫面分成幾個框窗,同時取得多個 url。只需要 即可,面所有框架標記需要放在乙個總起的 html 檔,這個檔案只記錄了該框架如何分割 不會顯示任何資料,所以不必放入...