Хранение файлов XML / HTML внутри базы данных SQLite - возможно? - PullRequest
2 голосов
/ 02 июля 2010

Можно ли напрямую хранить файл XML / HTML в базе данных SQLite?

Я пишу программу на python, которая должна анализировать файлы XML / HTML и хранить значения в базе данных.Однако поля внутри файлов XML / HTML могут различаться, и я подумал, что будет проще просто сохранить весь файл XML / HTML внутри базы данных, а затем анализировать его только при использовании.

Возможно ли это с Python и SQLite?Или я подхожу к этой проблеме под неправильным углом?

Заранее спасибо!

РЕДАКТИРОВАТЬ: Может ли кто-нибудь поделиться примером кода о том, как хранить файл?Я понимаю, что это возможно, но я не уверен, как это сделать.

1 Ответ

4 голосов
/ 02 июля 2010

Вы можете без проблем сохранить файл XML / HTML в виде текста в текстовом столбце.

Очевидным недостатком является то, что вы действительно не можете запрашивать значения в своем XML.

Edit: Вот пример. Просто прочитайте ваш XML-файл в переменную и сохраните его в БД, как если бы вы хранили любую строку вместе с любыми другими значениями, которые вы хотите сохранить. Если вы хотите использовать XML, просто прочитайте его из БД и проанализируйте с помощью анализатора 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 file
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))
cur.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...