Mysql是最流行的一種資料庫,就讓我們來學習如何在Python中使用它吧!!
需先到環境去安裝模組,我們使用的是PyMySQL,安裝方式可參考Day3,如下圖
安裝完成後就能import這個模組了
import pymysql
首先會先在本機的MySql建立一個資料庫30days
,可以透過資料庫管理工具建立資料庫,也可以於程式中下語法建立資料庫,個人比較習慣使用資料庫管理工具(ex. navicat、sequel)建立,建立資料庫完成後我們就來測試連線吧!
import pymysql
#資料庫連線設定
#可縮寫db = pymysql.connect("localhost","root","root","30days" )
db = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='30days', charset='utf8')
#建立操作游標
cursor = db.cursor()
#SQL語法(查詢資料庫版本)
sql = 'SELECT VERSION()'
#執行語法
cursor.execute(sql)
#選取第一筆結果
data = cursor.fetchone()
print ("Database version : %s " % data)
#關閉連線
db.close()
#輸出:Database version : 5.6.35
*
操作游標:獲得python執行Mysql命令的方法*
print函數中使用%s
是函數中格式化的用法(舊式)相當於使用format函數(參考)
成功輸出版本號代表連線正常,第一步就達成嘍,接著就是建立資料表,同資料庫可由語法建立也可透過管理工具建立,
我們先來設計資料表吧,存放的資料就是我們使用爬蟲爬回來的資訊,利用資料庫管理工具設計的表如下:
import pymysql
import datetime
Now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
#資料庫連線設定
db = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='30days', charset='utf8')
#建立操作游標
cursor = db.cursor()
#SQL語法
sql = "INSERT INTO PttSoftJob(SoftJobTitle, SoftJobLink, SoftJobTDate, SoftJobTCreatedDate) VALUES ('標題','https://www.ptt.cc/', '2018/11/01','"+ str(Now) +"')"
#執行語法
try:
cursor.execute(sql)
#提交修改
db.commit()
print('success')
except:
#發生錯誤時停止執行SQL
db.rollback()
print('error')
#關閉連線
db.close()
#輸出:success
執行完後可以打開資料表就會發現資料已經成功寫入,如下圖:
學會了新增後就能夠將我們的爬蟲程式加入資料庫模組嘍!
在昨日的程式增加模組引入及以下程式碼
#資料庫連線設定
db = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='30days', charset='utf8')
#建立操作游標
cursor = db.cursor()
for article in articles:
CreatedDate = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
sql = "INSERT INTO PttSoftJob(SoftJobTitle, SoftJobLink, SoftJobTDate, SoftJobTCreatedDate) VALUES ('" + article['title'] + "','" + article['href'] + "', '" + article['date'] + "','"+ str(CreatedDate) +"')"
try:
cursor.execute(sql)
#提交修改
db.commit()
except:
#發生錯誤時停止執行SQL
db.rollback()
print('error')
#關閉連線
db.close()
大功告成嘍!!!
文章內容如果有錯誤歡迎留言告知,可以幫忙糾正錯誤的觀念,感謝!
請問我在colab上連接mysql會出現
2003, "Can't connect to MySQL server on 'locathost' ([Errno -2] Name or service not known)")
會是甚麼問題?
import pymysql
conn = pymysql.connect(
host='locathost',
port=3306,
user='root',
passwd = 'root',
db='air'
)
cursor = conn.cursor()
這是我打的程式碼,passwd有打自己設定的密碼
我也有在mysql建立一個air的資料庫了
改過後問題還是一樣
我在command client連是可以連的
有用其他的資料庫管理工具嗎?
可以先試試看其他管理工具,能不能連或截個圖來看看吧