今天给大家分享下python在本地远程同步文章数据到wordpress,如果你的网站数据库是支持远程连接的话,那可以用下面的方法。
我当初写这个代码是为了解决wordpress底层站群的文章同步问题,可以让本地的mysql数据通过python脚本远程插入到网站数据库里,从而可以完成定时的更新。当然这个脚本如果部署到服务器上会更好,可以通过windows的计划任务和linux的cron服务来定期的启动这个脚本,从而达到每天更新文章的目的。
写这个脚本主要是要熟悉wordpress的表结构,不然你没法插入数据到wordpress数据表。
代码如下:
wordpress 数据python同步方法
1 2 |
#encoding=utf-8 #description:同步wordpress文章数据 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
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' |
