久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

pymysql使用心得記錄

 rcylbx 2018-11-22

折騰了將近兩天才把mysql數據庫功能給實現了,。

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

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


  • BUG 1

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

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

就是這么簡單的一行代碼,。。,。簡直蠢哭了
我一直以為 user 和 password 兩項是隨便填的,。。隨便,。,。填。,。的,。。,。
所以我付出了慘痛代價,,mysql軟件安裝了三四次,電腦重啟無數次,。,。。最后才慢慢悟出了真理,,原來他們是我在安裝mysql的時候自己設置的,。
另外我要提醒一下小伙伴們,如果你安裝mysql只是為了學習的話,,建議密碼不要太復雜,,否則你會后悔的,相信我,,恩,。


  • BUG 2
    第二個遇到的障礙就是數據庫和數據表的創(chuàng)建。

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

上面這行代碼中申明了數據庫是doubanmovie,,能這么寫的前提是你已經提前創(chuàng)建了這個名為doubanmovie的數據庫,,否則。,。,。崩。,。報錯,,別問我是怎么知道的。

好了,,數據庫的創(chuàng)建問題已經解決,,那么接下來就是數據表的創(chuàng)建了,。代碼很簡單,我輕輕松松的就寫出來了(傲嬌臉)

  1. cursor.execute("create table movie(name text, star text, quote text, info text)")  

但就是這么簡單的語句也有很多坑,。這并不是說這個語句有錯,,而是它對后面程序的調試很麻煩。因為這個語句執(zhí)行一次后,,如果再執(zhí)行顯然就會報錯,。你問為什么?因為已經存在名為movie的數據表了啊,。所以我為了測試數據,,就得反反復復的把這個語句注釋掉。

后來google,,百度查了一下,,得到了下面的解決辦法,加上"if not exists"就可以啦,。代碼如下:

  1. cursor.execute("create table if not exists movie(name text, star text, quote text, info text)")  

具體為什么就不解釋了,,實在不明白就百度翻譯一下,,因為太顯而易見了~~~

  • BUG 3

第三個bug就是數據插入操作,。
這是浪費時間最長的過程,中途差點想放棄了,,不過幸好堅持住了~~
具體的原因牽扯到代碼,,源頭很長就不解釋了,不過有興趣的可以看看代碼,。

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

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

  1. insert into 表名(變量名 數據類型) values(......); 

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

假如我的數據存放在movies列表(list)里,,數據存放在字典(dict)里

  1. movies = [ 

  2. "name":"肖申克的救贖"
  3. "star":"9.6"
  4. "info":"電影介紹"
  5. "quote":"電影名句" 
  6. }, 

  7. .... 


數據處理,,執(zhí)行插入操作
為行文方便,代碼有所簡略

  1. db = pymysql.connect(host="localhost",user="root",password="123456",db="doubanmovie",charset="utf8"
  2.  
  3. cursor = db.cursor() 
  4. for movie in sort_movies: 
  5. star = movie["star"
  6. name = movie["name"
  7. info = movie["info"
  8. quote = movie["quote"
  9. sql = "insert into movie(star,name,info,quote) values('%s', '%s', '%s', '%s');" % (star, name, info, quote) 
  10. try
  11. cursor.execute(sql) 
  12. db.commit() 
  13. print("數據插入成功\n*************\n"
  14. except Exception as e: 
  15. raise
  16. db.close()  

以前的原始方法是

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

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

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

這個可以很好的生成mysql執(zhí)行語句,。
stackoverflow的回答中有的人建議把上面代碼中的 % 改為 ,,具體啥原因參見stackoverflow Python MySQL Statement returning Error

還有得記得加上這行代碼

  1. db.commit() 


往后版本希望擴展的功能:

  • 將數據項增加“年份”,即電影的上映年份

  • 電影數據分析

    • 評分情況

    • 前100名中各國家所占比例

    • 各種電影類型所占比例

  • 可視化數據

干巴爹?。,。。,?!


當然如果有什么可以完善的也歡迎大家提出修改意見,,希望與大家一起學習,進步

大家也可以在我的博客中給我留言哈,,很高興能和大家交流溝通

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多