說實話,php能看懂,寫的話就再須要熟悉一下語法。python建站須要從頭開始。包括模板、cms、都沒有php下的wordpress多。插件上也是wordpress有絕對的優點。本身一直寫的python後臺,前端頁面放個一兩年真是連個毛都不剩下了。仔細考慮了一些,仍是決定使用wordpress搭建本身的小博客玩一玩。隨便下載了一個wordpress,本地搭建起來後,分析了一下wordpress數據庫表的關係。把幾個主要的表格梳理了一下,如下是簡單的記錄。(非專業php,僅從後端角度簡單分析,若有大師路過,勿噴)。php
本人喜歡上網蒐集一些書籍,也喜歡讀書。就以以前看到的三人行書屋爲例:三人行書屋截圖以下。html
這個網站用插件分析了一下,用的是GIt主題。頁面的主要分析點截圖中標紅框-文章目錄、文章、文章標籤。涉及的表有:wp_terms、wp_posts、wp_term_taxonomy、wp_term_ralationships.前端
這幾個表的功能分別是: wp_posts:文章存儲表。主要字段:ID-自增ID。post_title-文章的標題。post_excerpt-文章簡介python
wp_terms: 標籤、目錄的存儲表。term_id-自增id。name-標籤或目錄的名稱。slug-urlencode後的內容。mysql
wp_term_taxonmy: 目錄、標籤的描述信息,主要字段:term_taxonomy_id-該表的自增id,term_id-對應上面的wp_terms的term_id,taxonomy- 目錄或者標籤(category or post_tag),count:計數器,對應截圖中的標籤下的數字。git
wp_term_relationships: wp_terms 和 wp_posts的關聯表。也就是說,這張表決定了一篇文章就是是什麼目錄,有什麼標籤。主要字段:object_id - 對應的是wp_posts中的ID。term_taxonomy_id對應的是wp_term_taxonomy中的term_taxonomy_id。object_id、term_taxonomy_id 是多對多的關係。sql
文章分析是基於在wordpress中實際編輯文章及目錄標籤等,而後觀察每一個表格的變化,分析較爲簡單粗暴。可是基本上可以做爲二次開發的基礎使用了。數據庫
說是二次開發,其實並無什麼具體的目標,沒想好創建什麼網站。就當前期的熱身活動,熟悉和驗證結論是否正確。我仍是使用我最熟悉的python做爲開發語言。後端
具體哪一個網站就不透露了。大多數網站這都有咱們所需的元素。使用python簡單編寫了scrapy爬蟲(簡單點的直接用requests爬了),咱們須要用到的素材均做單獨字段存儲。session
我推薦比較好的作法是使用sqlalchemy對源數據表和wp數據表進行建模。而後根據wp各個表的關係作事務插入。即便用一個session對上面提到的幾個表作完整性的數據插入。
這裏推薦一個快速生成數據模型的工具,配合sqlalchemy使用事半功倍。sqlacodegen
具體操做方法:
1. pip install sqlacodegen
2. sqlacodegen --outfile=models.py mysql://root:guess@192.168.1.250:3306/test
第二部操做是對整個庫的建模,固然也能夠選擇對某張表進行建模。
sqlacodegen --outfile=models.py mysql://root:guess@192.168.1.250:3306/test --tables teacher,student
我具體的處理邏輯,部分僞代碼以下(寫的太亂,只能拿出部分僞代碼獻醜了)
post = spider_session.query(SpiderData).filter(SpiderData.id == 1) # 從爬蟲庫中選出一條
...
# wordpress 數據庫插入
wp_post = WpPost()
wp_post.post_title = post.article_name
wp_post.post_content = post.content
wp_post.post_excerpt = post.short_introduction
wp_post.post_status = "publish"
session_wp.add(wp_post)
session_wp.commit()
# 一下是wp_terms表,term表能夠提早把標籤和分類先作插入,這裏只作查詢
terms = spider_session.query(SpiderData).filter(SpiderData.id == 1).all()
# 插入wp_terms
for term in terms:
# 在wp_terms 中找到這個標籤對應的id。前提是你已經插入。
term_id = session_wp.query(WpTerm).filter(WpTerm.name == term.name).first()
# 對wp_term_relationships進行處理
object_id = wp_post.ID
wp_relationship = WpTermRelationships()
wp_relationship.object_id = object_id
wp_relationship.term_id = term_id
session_wp.add(wp_relationship)
session_wp.commit()
以上代碼只是提供思路實際應用中注意異常處理等。
寫這篇文章的時候距離完成個人小demo網站已經有一段時間了。方向是技術博客類型。
還能想起可是第一次接觸wordpress時的一臉懵逼,沉下心研究一段時間你就會發現,原來不少事情在你全力作了以後就會變得很簡單。
以上。