mirror of
https://github.com/simon987/hexlib.git
synced 2025-04-19 17:56:43 +00:00
add custum SQL in persistant state
This commit is contained in:
parent
f914759b71
commit
d615ebdbd9
10
hexlib/db.py
10
hexlib/db.py
@ -90,6 +90,16 @@ class Table:
|
|||||||
self._state = state
|
self._state = state
|
||||||
self._table = table
|
self._table = table
|
||||||
|
|
||||||
|
def sql(self, where_clause, *params):
|
||||||
|
with sqlite3.connect(self._state.dbfile, **self._state.dbargs) as conn:
|
||||||
|
conn.row_factory = sqlite3.Row
|
||||||
|
try:
|
||||||
|
cur = conn.execute("SELECT * FROM %s %s" % (self._table, where_clause), params)
|
||||||
|
for row in cur:
|
||||||
|
yield dict(row)
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
with sqlite3.connect(self._state.dbfile, **self._state.dbargs) as conn:
|
with sqlite3.connect(self._state.dbfile, **self._state.dbargs) as conn:
|
||||||
conn.row_factory = sqlite3.Row
|
conn.row_factory = sqlite3.Row
|
||||||
|
2
setup.py
2
setup.py
@ -2,7 +2,7 @@ from setuptools import setup
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="hexlib",
|
name="hexlib",
|
||||||
version="1.23",
|
version="1.24",
|
||||||
description="Misc utility methods",
|
description="Misc utility methods",
|
||||||
author="simon987",
|
author="simon987",
|
||||||
author_email="me@simon987.net",
|
author_email="me@simon987.net",
|
||||||
|
@ -75,3 +75,14 @@ class TestPersistentState(TestCase):
|
|||||||
val["id"] = 1
|
val["id"] = 1
|
||||||
|
|
||||||
self.assertDictEqual(val, s["a"][1])
|
self.assertDictEqual(val, s["a"][1])
|
||||||
|
|
||||||
|
def test_sql(self):
|
||||||
|
s = PersistentState()
|
||||||
|
|
||||||
|
s["a"][1] = {"a": True}
|
||||||
|
s["a"][2] = {"a": False}
|
||||||
|
s["a"][3] = {"a": True}
|
||||||
|
|
||||||
|
items = list(s["a"].sql("WHERE a=0 ORDER BY id"))
|
||||||
|
|
||||||
|
self.assertDictEqual(items[0], s["a"][2])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user