Move sqlite related stuff to dedicated module

This commit is contained in:
Mathieu Comandon 2013-05-26 20:38:24 +02:00
parent b3a85220cb
commit 66cd9315dc

49
lutris/util/sql.py Normal file
View file

@ -0,0 +1,49 @@
import sqlite3
class db_cursor(object):
def __init__(self, db_path):
self.db_path = db_path
def __enter__(self):
self.db_conn = sqlite3.connect(self.db_path)
cursor = self.db_conn.cursor()
return cursor
def __exit__(self, type, value, traceback):
self.db_conn.commit()
self.db_conn.close()
def db_insert(db_path, table, fields):
field_names = ", ".join(fields.keys())
placeholders = ("?, " * len(fields))[:-2]
field_values = tuple(fields.values())
with db_cursor(db_path) as cursor:
cursor.execute(
"insert into {0}({1}) values ({2})".format(table,
field_names,
placeholders),
field_values
)
def db_delete(db_path, table, field, value):
with db_cursor(db_path) as cursor:
cursor.execute("delete from {0} where {1}=?".format(table, field),
(value,))
def db_select(db_path, table, fields):
field_names = ", ".join(fields)
with db_cursor(db_path) as cursor:
cursor.execute("SELECT {0} FROM {1}".format(field_names, table))
rows = cursor.fetchall()
column_names = [column[0] for column in cursor.description]
results = []
for row in rows:
row_data = {}
for index, column in enumerate(column_names):
row_data[column] = row[index]
results.append(row_data)
return results