深入Wordpress數據庫結構,研究一下用Python程序發帖

2018-10-07 约 1039 字 预计阅读 3 分钟

學了Python,感覺這個語言用起來更順手。

各類的代碼庫也非常全,用來做內容獲取再好不過了。

可是如果要在前端顯示出來,就需要用Django或者Flash那種平台,學習周期也比較長。

現在用Wordpress玩博客,感覺如果優化配置好了,MySQL也沒有傳說中的效率那麼差,且Wordpress現成的模板插件也足夠多。

可以直接用來做前端,省下大量去學習新的平台的時間。

故此可以用Python作為後台程序,MYSQL作為接口,Wordpress作為前端。

這樣一個小中型的網站框架就足以搭建起來。

為了深入了解到Wordpress如何設計數據庫的。專門重裝了一個wordpress站點。然後用PHP MY ADMIN來看看數據庫

Wordpress設計了12個表:



最主要的肯定是posts表了。看一下其結構:



也就是我們用python來發帖的話,主要寫入內容到這個表裏.

以前Wordpress提供了XML-RPC的接口,幾年前曾用delphi發過一次帖。知其然而不知其所以然,故此也沒太明白其中原理。

這次看Wordpress的新版本,也沒有XML-RPC的接口了,不知何故取消掉。

這次本著“究竟”的原則,還是直接用最基本的操作Mysql來解決這個問題吧。

生成一個addpost.py.內貼
import mysql.connector
import datetime

mydb = mysql.connector.connect(
host="127.0.0.1",
user="yourusername",
passwd="yourpassword",
database="wordpress"
)

mycursor = mydb.cursor()
dt=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
sql = "INSERT INTO fx_posts (post_content, post_title,post_name, \
post_date,post_date_gmt,post_modified, post_modified_gmt, \
post_excerpt,to_ping,pinged,post_content_filtered ) \
VALUES (%s, %s,%s, %s,%s,%s, %s,%s, %s,%s, %s)"
val = ("This is post by python script", "python test","python-post",dt,dt,dt,dt,'','','','')
mycursor.execute(sql, val)

mydb.commit()

運行一下,出現“no module name: mysql".

好吧,需要再安裝
sudo pip3 install mysql-connector-python

運行沒有問題。到網站上一看果然增加了一個帖子



這個目錄是未分類的。如果打算放在test分類目錄下。再看一下fx_terms的表內容。這裏就放著目錄的信息。



看到test目錄的term_id是1.則再增加幾行代碼
......

lastid=mycursor.lastrowid
sql = "INSERT INTO fx_term_relationships (object_id, term_taxonomy_id) \
VALUES (%s, %s)"
val = (str(lastid),"1")
mycursor.execute(sql, val)
mydb.commit()

運行一下。到網站一看,有了



那如何給帖子自動增加一個Featured image。

這個需要自己在wordpress裏麵上傳圖片,然後在數據庫裏檢索其id,然後再將帖子跟圖片的id指定。

比如我知道我上傳了一個文件名叫mikito-tateisi-333584-unsplash.jpg,(感謝攝影師Mikito Tateisi

加下列代碼就可以找到其id,並將之指定為該帖Featured Image
sql = "SELECT ID FROM fx_posts WHERE post_title ='mikito-tateisi-333584-unsplash' and post_mime_type='image/jpeg'"

mycursor.execute(sql)

myresult = mycursor.fetchone()

sql = "INSERT INTO fx_postmeta (post_id, meta_key, meta_value) \
VALUES (%s, %s, %s)"
val = (str(lastid),"_thumbnail_id",str(myresult[0]))


mycursor.execute(sql, val)
mydb.commit()

好,再運行一次。加熱圖的帖子也能夠用Python自動添加了。



 

隻要抓住基礎。用Python-Mysql-Wordpress就可以生成很多變化,就當一個小玩具吧 :)

 

 

author

Jesse Lau

網名遁去的一,簡稱遁一。2012年定居新西蘭至今,自由職業者。手搓的GPTs
本文采用知識共享署名 4.0 國際許可協議進行許可。簡而言之,可隨意轉發轉載,轉載請注明出處。


留点评论吧: