存储评论数据python的最快方法

时间:2009-04-22 12:56:56

标签: python xml json

您好我在服务器上运行了一个小评论shoutbox类型的cgi进程,目前当有人发表评论时我只是将该评论格式化为html,即

<p class="title">$title</p> <p class="comment">$comment</p>

并存储在平面文件中。 如果在我自己的简单规范中重新实现xml或json中的存储,或者坚持使用简单的html路由,那么它在LOC中会更快且可接受地低吗?

我不想为此使用关系数据库。

3 个答案:

答案 0 :(得分:3)

如果平面文件足够快,那么请使用它,因为它非常简单且易于访问。存储为XML和JSON但仍然使用平面文件可能在性能上非常可比。

您可能需要考虑(如果您只是将其排除在问题之外,请忽略此选项)清理/过滤文本,以便用户无法通过以下方式破坏您的HTML输入“&lt; / p&gt;”在评论文本中。

答案 1 :(得分:1)

XML是存储此类数据的好方法。在Python中,您可以使用lxml来创建/更新文件:

from lxml import etree

P_XML = 'xml_file_path.xml'

def save_comment(title_text, comment_text):
  comment = etree.Element('comment')
  title = etree.SubElement(comment, 'title')
  title.text = title_text
  comment.text = comment_text
  f = open(P_XML, 'a')
  f.write(etree.tostring(comment, pretty_print=True))
  f.close()

save_comment("FIRST!", "FIRST COMMENT!!!")
save_comment("Awesome", "I love this site!")

这是一个简单的开始,但你可以做更多的事情(即为每个评论设置一个ID,使用lxml解析器读入XML并添加到它而不是仅仅附加文件)。

答案 2 :(得分:1)

平面文件是最快的持久性形式。期。没有格式化,编码,索引,锁定或其他任何东西。

JSON(和YAML)施加了一些开销。他们会慢一些。必须要做一些格式化。

XML比JSON / YAML带来更多的开销。它会慢一些。必须完成相当多的格式化。

开销越大,它就越慢。

这些都与清理注释输入有关,因此它将显示为有效的HTML。在将文本保存到文件之前,您应该使用cgi.escape来转义注释中任何类似HTML的字符序列。