mirror of
https://github.com/zadam/trilium.git
synced 2025-03-04 02:53:30 +08:00
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import base64
|
|
import sqlite3
|
|
|
|
conn = None
|
|
|
|
def dict_factory(cursor, row):
|
|
d = {}
|
|
for idx, col in enumerate(cursor.description):
|
|
if isinstance(row[idx], buffer):
|
|
d[col[0]] = base64.b64encode(row[idx])
|
|
else:
|
|
d[col[0]] = row[idx]
|
|
|
|
return d
|
|
|
|
def connect(documentPath):
|
|
global conn
|
|
conn = sqlite3.connect(documentPath)
|
|
conn.row_factory = dict_factory
|
|
|
|
def insert(tablename, rec):
|
|
# FIXME: SQL injection!
|
|
keys = ','.join(rec.keys())
|
|
question_marks = ','.join(list('?'*len(rec)))
|
|
values = tuple(rec.values())
|
|
cursor = execute('INSERT INTO '+tablename+' ('+keys+') VALUES ('+question_marks+')', values)
|
|
return cursor.lastrowid
|
|
|
|
def setOption(name, value):
|
|
execute("UPDATE options SET opt_value = ? WHERE opt_name = ?", [value, name])
|
|
|
|
def getOption(name):
|
|
return getSingleResult("SELECT opt_value FROM options WHERE opt_name = ?", [name])['opt_value']
|
|
|
|
def delete(tablename, note_id):
|
|
execute("DELETE FROM " + tablename + " WHERE note_id = ?", [note_id])
|
|
|
|
def execute(sql, params=[]):
|
|
cursor = conn.cursor()
|
|
cursor.execute(sql, params)
|
|
return cursor
|
|
|
|
def getResults(sql, params=[]):
|
|
cursor = conn.cursor()
|
|
query = cursor.execute(sql, params)
|
|
return query.fetchall()
|
|
|
|
def getSingleResult(sql, params=()):
|
|
cursor = conn.cursor()
|
|
query = cursor.execute(sql, params)
|
|
return query.fetchone()
|
|
|
|
def commit():
|
|
conn.commit()
|