利用django的ORM可以方便的給數據庫插入文章
但是假如我django放在阿里云,那我想在本地寫個插件,每天很方便的插入一些數據,最好是通過ORM的,因為管理起來比較方便,會涉及到多個站,可能會有200多個站,而ORM接口就不要每次輸入密碼了,類似wrodpress的接口這種
如果用SQL插入,就感覺不太優雅,而且比較麻煩,每次都要鏈接,數據庫,因為這些站很可能會分到好幾個數據庫里
這里補充一下吧.其實需求很簡:
就是在本地的電腦上,控制遠程的django,實現批量發布文章和管理文章的功能!
最好能用到django的ORM
如果沒辦法解決,那么如何讓本地的python腳本很方便的管理遠程服務器的python的腳本,可以直接操作遠程腳本進行一些命令等
7月8日再補充一下說明:
答案里面不少說暴露api的方式,我研究了一下,好像不太可以~
理由:
我django的models是這樣設計的,里面有這些字段:
category = models.ForeignKey(Category, verbose_name=u'分類')
title = models.CharField(max_length=100, verbose_name=u'標題')
img = models.CharField(max_length=200,
default='/static/img/article/default.jpg')
tags = models.CharField(max_length=200, null=True, blank=True,
verbose_name=u'標簽', help_text=u'用逗號分隔')
summary = UEditorField('摘要', height=300, width=1000,
default=u'', blank=True, imagePath="uploads/images/",
toolbars='besttome', filePath='uploads/files/')
content = UEditorField('內容', height=300, width=1000,
default=u'', blank=True, imagePath="uploads/images/",
toolbars='besttome', filePath='uploads/files/')
is_tuijian = models.BooleanField(default=False, verbose_name=u'推薦')
view_times = models.IntegerField(default=0)
zan_times = models.IntegerField(default=0)
is_top = models.BooleanField(default=False, verbose_name=u'置頂')
rank = models.IntegerField(default=0, verbose_name=u'排序')
status = models.IntegerField(default=0, choices=STATUS.items(),
verbose_name='狀態')
# pub_time = models.DateTimeField(default=False,verbose_name=u'發布時間')
pub_time = models.DateTimeField(auto_now_add = True,verbose_name=u'發布時間') #博客日期
create_time = models.DateTimeField(u'創建時間', auto_now_add=True)
update_time = models.DateTimeField(u'更新時間', auto_now=True)
大家大概體驗一下就可以了~就是說字段很多,而且基本都是非空字段,但是都有設置默認值!
用暴露api的方式,其實和自己寫sql語句的效果差不多~:
插入的數據,每個字段都要寫,比如sql語句, 你就不能只是簡單的寫個 title content category 這3個字段的值,而其他的django的ORM已經定義好了!
我大概舉個例子大家就會明白!!!
比如如果用sql插入的話可能要構建這樣一條語句:
INSERT INTO `zhangte`.`blog_article` (`id`,`title`,`img`,`summary`,`content`,`view_times`,`zan_times`,`is_top`,`rank`,`status`,`pub_time`,`create_time`,`update_time`,`category_id`,`tags`,`is_tuijian`,`is_tuijian`) VALUES ('{id}','{title}','{img}','{summary}','{content}','{view_times}','{zan_times}','{is_top}','{rank}','{status}','{pub_time}','{create_time}','{update_time}','{category_id}','{tags}','{is_tuijian}','{is_tuijian}');
暫且不說字段多,看起來雜!
而且萬一我程序修改一個字段,那這個代碼就不能用了!
那暴露api,其實也是一樣的,比如我要post數據~那post數據,每個對應的字段都要寫!
等于其實跟sql差不多的,結果可能是data 要寫成這樣:
data = {}
data["pk"] = pk
data["title"] = title
data["content"] = content
data["view_times"] = view_times
^^^^此處省略余下十幾個字段!!!
等于說我每個字段都要定義,要不然會出現錯誤(因為都是非空!)
那如果有人建議,把這些字段改下可以空的話不就可以~?如果真是這樣,那以后我怎么進行數據篩選?!?!!??!?
其實我想要的是這個效果!!!
假如能用django的ORM,就很方便了
插入數據只要:
article = Article.objects.get_or_create(
pk = pk,
title = title,
content = content,
category = fenlei,
summary = summary,
)[0]
就插入一條數據了!
這樣的好處:
代碼簡潔
我以后對程序進行修改,比如增加字段等,就非常方便,理由大家應該都懂的!
還有很多好處!我相信如果django的ORM可以解決的話,肯定比如暴露api或是直接用sql語句操作方便很多吧