首页 > 解决方案 > 从请求数据生成 XML 代码并插入数据库

问题描述

我正在将数据接收到 REST API 中,并且我想将其作为 XML 代码插入到数据库中。当我后来从数据库中读取记录时,我期望 XML 代码格式正确。

data=str(request.data)
cur=mydb.cursor()
currentDT = datetime.datetime.now()
val=data.replace("'","''")
cur.execute("insert into MyXMLApi(dateofInsertion,xmlData) values('%s','%s')"%(str(currentDT),val))
mydb.commit()

这是我希望在数据库中看到的:

"<note>
Don't forget me this weekend!
</note>"

但是,这是我实际得到的:

'b"<note>
Don''t forget me this weekend!
</note>"'

所以我在这里有三个问题。

  1. 我必须处理 XML 代码中的单引号。
  2. 它应该存储为适当的 XML 代码。
  3. 当我从数据库中读取时,我无法获得正确的代码。

标签: mysqlpython-3.xflask

解决方案


request.data是 Flask 中的一个字节串。(请参阅属性data文档get_data()。)但是您想将其保存为非字节,只是将纯字符串保存到数据库中。转换不是这样做的方法。str()

假设您想要一个 UTF-8 字符串,请将第一行替换为

data=request.data.decode('UTF-8')

然后,您将能够将其保存到您的数据库中。

关于单引号,我认为您不应该自己逃避它们。使用参数绑定,库会为你做这件事。

(顺便说一句,这听起来像是一个非常奇怪的用例。为什么不将data字段存储在您的表中note?)


推荐阅读