将 XML/HTML 文件存储在 SQLite 数据库中 - 可能吗?

M R*_*n C 4 python xml sqlite

是否可以直接将 XML/HTML 文件存储在 SQLite 数据库中?

我正在用 python 编写一个程序,它应该解析 XML/HTML 文件并将值存储在数据库中。但是,XML/HTML 文件中的字段可能会有所不同,我认为将整个 XML/HTML 文件简单地存储在数据库中然后仅在使用时对其进行解析会更容易。

这可以用 python 和 SQLite 实现吗?还是我从错误的角度处理这个问题?

提前致谢!

编辑:任何人都可以分享有关如何存储文件的代码示例吗?我知道这是可能的,但我不确定如何去做。

Dan*_*per 6

您可以将 XML/HTML 文件作为文本存储在文本列中而不会出现问题。

明显的缺点是您无法真正查询 XML 中的值。

编辑:这是一个例子。只需将您的 XML 文件读入一个变量并将其存储在数据库中,就像存储任何字符串以及您想要存储的任何其他值一样。当您想使用 XML 时,只需从 DB 读取它并使用 XML 解析器解析它。

# connect to database and create table
import sqlite3
conn = sqlite3.connect(":memory:")
conn.execute('''create table my_table (value1 integer, value2 integer, xml text)''')

# read text from your input file containing xml
f = file('/tmp/my_file.xml')
xml_string_from_file = f.read()

# insert text into database
cur = conn.cursor()
cur.execute('''insert into my_table (value1, value2, xml) values (?, ?, ?)''', (23, 42, xml_string_from_file))
conn.commit()

# read from database into variable
cur.execute('''select * from my_table''')
xml_string_from_db = cur.fetchone()[2]

# parse with the XML parser of your choice
from xml.dom.minidom import parseString
dom = parseString(xml_string_from_db)
Run Code Online (Sandbox Code Playgroud)