Wurm is a simple sqlite3-based ORM.
# create a table:
@dataclass
class Point(wurm.Table):
x: int
y: int
# types currently supported: int, str, bytes, bool, float, datetime.time,
# datetime.date, datetime.datetime, pathlib.Path
# sqlite3 connections cannot be shared, so call setup_connection once per thread
wurm.setup_connection(sqlite3.connect(":memory:"))
# adding new instances to the database:
point = Point(1, 0)
print(point.rowid) # None
point.insert()
print(point.rowid) # 1
# making changes:
point.x = 2
point.commit()
# simple queries:
point = Point.query(rowid=1).one() # get by rowid
Point.query(rowid=1).delete() # delete by rowid
point.delete() # delete from an object
all_points = list(Point) # iterate over a table to get instances for all rows
number_of_points = len(Point) # get the total number of rows in the table
wurm is distributed on PyPI as a universal wheel and is available on Linux/macOS and Windows and supports Python 3.7+.
$ pip install wurm
- Add
wurm.Table.query()
andwurm.Query
. - Remove
wurm.Table[rowid]
getter and deleter. - Add documentation for the public interface.
- Ensure tables are created, even in edge cases.
- Add support for
date
,time
,datetime
andPath
. - Add
wurm.Unique[T]
.
wurm is distributed under the terms of the MIT License.