wordpress 数据远程同步方法

 今天给大家分享下python在本地远程同步文章数据到wordpress,如果你的网站数据库是支持远程连接的话,那可以用下面的方法。
我当初写这个代码是为了解决wordpress底层站群的文章同步问题,可以让本地的mysql数据通过python脚本远程插入到网站数据库里,从而可以完成定时的更新。当然这个脚本如果部署到服务器上会更好,可以通过windows的计划任务和linux的cron服务来定期的启动这个脚本,从而达到每天更新文章的目的。

写这个脚本主要是要熟悉wordpress的表结构,不然你没法插入数据到wordpress数据表。
代码如下:

wordpress 数据python同步方法

#encoding=utf-8
#description:同步wordpress文章数据
 
import MySQLdb
import datetime
import time
from  tools import *

def wp_checktitle(dbconn,title):
    '''wordpress检测是否有重复标题'''

    cursor=dbconn.cursor()

    sql = "select post_title from wp_posts where post_title='%s'" % (title)
    cursor.execute(sql)

    if cursor.rowcount == 0:
        checkflag = 1
    else:
        checkflag = 0

    return checkflag



def  sync_wordpress(dbconn,title,content):
    '''同步wordpress程序'''
    
    checkflag = wp_checktitle(dbconn,title)
    cursor=dbconn.cursor()
    
    curtime = str(datetime.datetime.now())[:19]
    
    post_author = 1
    post_date = curtime
    post_date_gmt = curtime
    post_content = content
    post_title = title
    post_name = post_title
    post_modified = curtime
    post_modified_gmt = curtime
    post_content_filtered = ''
    currenttime = int(time.time())
    

    if checkflag:
       try:
           postsql = ''
           postsql = '''INSERT INTO `wp_posts` (
                  `post_author` ,
                  `post_date` ,
                  `post_date_gmt` ,
                  `post_content` ,
                  `post_title` ,
                  `post_name` ,
                  `post_modified`,
                  `post_modified_gmt`,
                  `post_content_filtered`
                  )
                  VALUES (
                   '%(post_author)s','%(post_date)s','%(post_date_gmt)s','%(post_content)s','%(post_title)s','%(post_name)s','%(post_modified)s','%(post_modified_gmt)s','%(post_content_filtered)s')''' % {'post_author':post_author,'post_date':post_date,'post_date_gmt':post_date_gmt,'post_content':post_content,'post_title':post_title,'post_name':post_name,'post_modified':post_modified,'post_modified_gmt':post_modified_gmt,'post_content_filtered':post_content_filtered}
           

           cursor.execute(postsql)
           dbconn.commit()
           
           rowid = cursor.lastrowid
               
           metasql = ''
           metasql = "insert into `wp_postmeta`(`post_id`)VALUES(%s)" % (rowid)
           cursor.execute(metasql)
           dbconn.commit()

           insertsql = '''INSERT INTO `wp_term_relationships` (
           `object_id` ,
           `term_taxonomy_id` 
           )
           VALUES (
           %(object_id)s%(term_taxonomy_id)s) ''' % {'object_id':rowid,'term_taxonomy_id':1}
           
           cursor.execute(insertsql)
           dbconn.commit()

           return 1

       except Exception, e:
            print '数据库错误:', e
            return 0

       finally:
            cursor.close()
            dbconn.close()
    else:
        print 'wordpress title exist'
        return 1

title = 'titl-wptitle'
zcontent = 'content—————–'

curhost = ''##远程数据库服务器地址
webuser = ''#数据库用户名
webpwd =''#数据库密码
webdb = ''#数据库名称

dbconn = MySQLdb.connect(host=curhost, user=webuser, passwd=webpwd, db=webdb, port=3306, charset='utf8')
     
flag = sync_wordpress(dbconn,title,zcontent)

if flag:
    print 'wordpress sync success'
else:
    print 'wordpress sync error'
 
posted @ 2012-11-29 14:19  老王python  阅读(1110)  评论(0编辑  收藏  举报