iT邦幫忙

0

pymysql 寫入新聞數據進 MySQL DB ,HeidiSQL 顯示有資料行數,但卻query不到數據

  • 分享至 

  • xImage

各位大大好

如標題,小弟用python 爬取了一些新聞數據,想把他們存進資料庫,但遇到很奇怪的bug,一時不知如何解決,我用 pymysql 下了

REPLACE INTO my_table
VALUES (data);

執行後看似數據有寫入成功,用pymysql立刻再下

SELECT *
FROM _table;

也可以順利撈到數據

但是我用 DB圖形介面 HeidiSQL 去看,他的資料表總攬可以看到如下圖有顯示資料行數:
https://ithelp.ithome.com.tw/upload/images/20200408/20110872H77llWZb1v.png

但是當我點進資料表時,卻Query不出任何資料,在介面中寫 SELECT * 語法也是,當我做完這件事情,在回去用python下剛剛的語法時,這時資料回吐就變成 None。
我完全不知道原因出在哪 @@

請問這可能會時甚麼原因造成的呢?
這邊也附上我的 table data type 的設定,不知道與這個有沒有關係。
謝謝各位大大

https://ithelp.ithome.com.tw/upload/images/20200408/20110872h2uj5FJR4B.png

ccutmis iT邦高手 2 級 ‧ 2020-04-08 16:51:03 檢舉
資料表為何會有3個主KEY?
huahualiu iT邦新手 2 級 ‧ 2020-04-08 17:09:06 檢舉
因為這三個要素如果任兩個或者取一個當 primary key,資料沖到的機率很高,所以用三個才比較適合表是一筆資料的唯一性
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
一級屠豬士
iT邦大師 1 級 ‧ 2020-04-08 17:25:50
最佳解答

commit 要下.
https://pymysql.readthedocs.io/en/latest/user/examples.html#crud

裡面的範例,有寫註解.
# connection is not autocommit by default. So you must commit to save
# your changes.
connection.commit()

看更多先前的回應...收起先前的回應...
huahualiu iT邦新手 2 級 ‧ 2020-04-08 17:35:57 檢舉

謝謝大大,我晚點試試
但好奇問一下
如果說因為沒下commit 而沒辦法存取
為何資料庫還是有顯示資料行數 @@
這是我昨天下的語法
今天登進資料庫看還是顯示有 200 行資料在裡面

你沒有把你的程式碼,還有過程,完整紀錄下來.
現在是一團混亂,你自己也記不清,就別糾結,要靠印象來查.
最操蛋的就是憑印象,感覺,東拼西湊,堅持錯誤的,然後放大上綱.
別懷疑電腦,要懷疑你.就跟飛行員要相信儀表,不能相信感覺一樣.

你看你標題說workbench,內文是HeidiSQL, 這就不是工程師風格了.
要追就把這個先忘記,你建立新的Table,用新的程式,完整紀錄下來.
那才有意義.

huahualiu iT邦新手 2 級 ‧ 2020-04-08 18:17:51 檢舉

好 感謝大大建言
上了一課 /images/emoticon/emoticon33.gif

資訊的學習有一個優勢,就是可以很方便的複製資料.
所以要善用此優勢,做完整的測試與紀錄,再來做總結.
至於有些已經模糊的,就別糾結了,因為哪個環節出問題,
去傷腦筋也沒用啊,都是基於不可靠的推測,那又何必.

我要發表回答

立即登入回答