wordpress 数据远程同步方法
今天给大家分享下python在本地远程同步文章数据到wordpress,如果你的网站数据库是支持远程连接的话,那可以用下面的方法。
我当初写这个代码是为了解决wordpress底层站群的文章同步问题,可以让本地的mysql数据通过python脚本远程插入到网站数据库里,从而可以完成定时的更新。当然这个脚本如果部署到服务器上会更好,可以通过windows的计划任务和linux的cron服务来定期的启动这个脚本,从而达到每天更新文章的目的。
写这个脚本主要是要熟悉wordpress的表结构,不然你没法插入数据到wordpress数据表。
代码如下:
wordpress 数据python同步方法
Python语言: 高亮代码由发芽网提供
#encoding=utf-8
#description:同步wordpress文章数据
#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'
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'