diff options
Diffstat (limited to 'gn_libs/protocols/db.py')
-rw-r--r-- | gn_libs/protocols/db.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gn_libs/protocols/db.py b/gn_libs/protocols/db.py new file mode 100644 index 0000000..b365f8b --- /dev/null +++ b/gn_libs/protocols/db.py @@ -0,0 +1,35 @@ +"""Generic database protocols.""" +from typing import Any, Protocol + + +class DbCursor(Protocol): + """Type annotation for a generic database cursor object.""" + def execute(self, *args, **kwargs) -> Any: + """Execute a single query""" + + def executemany(self, *args, **kwargs) -> Any: + """ + Execute parameterized SQL statement sql against all parameter sequences + or mappings found in the sequence parameters. + """ + + def fetchone(self, *args, **kwargs): + """Fetch single result if present, or `None`.""" + + def fetchmany(self, *args, **kwargs): + """Fetch many results if present or `None`.""" + + def fetchall(self, *args, **kwargs): + """Fetch all results if present or `None`.""" + + +class DbConnection(Protocol): + """Type annotation for a generic database connection object.""" + def cursor(self) -> Any: + """A cursor object""" + + def commit(self) -> Any: + """Commit the transaction.""" + + def rollback(self) -> Any: + """Rollback the transaction.""" |