深入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年定居新西兰至今,自由职业者,从事网站和程式交易,曾获得Dukascopy外汇程序交易比赛2届月度冠军(id:Tradingwithea).
本文采用知识共享署名 4.0 国际许可协议进行许可。


留点评论吧:

本网站使用cookie技术以提高用户体验度。 了解我们的隐私政策 我已了解