import pathlib
import sqlite3
db = sqlite3.connect(":memory:") # could be a real path too
db.execute(
"CREATE TABLE IF NOT EXISTS pdfs (id INTEGER PRIMARY KEY, name TEXT, data BLOB)"
)
pdf_path = pathlib.Path("./dice_simulator.pdf")
pdf_data = pdf_path.read_bytes()
db.execute("INSERT INTO pdfs (name, data) VALUES (?, ?)", (pdf_path.name, pdf_data))
db.commit()
for name, data, data_length in db.execute("SELECT name, data, LENGTH(data) FROM pdfs"):
print(f"{name} is {data_length} bytes long")
assert data == pdf_data
2条答案
按热度按时间2jcobegt1#
只需从任何地方读取字节并将其放入
BLOB
列。这也是SQLite的“建议”用例之一:https://www.sqlite.org/appfileformat.html
字符串
pbpqsu0x2#
我建议不要在数据库中保存文件。相反,保存文件的地方(例如创建文件夹
pdf
或类似的东西)和保存路径文件作为字符串在数据库中。大文件的数据库操作成本非常昂贵。