From 8aa161a43731795841fa2678d3dff0559cee527e Mon Sep 17 00:00:00 2001 From: David Lord Date: Fri, 1 Nov 2024 17:18:52 -0700 Subject: [PATCH] add sqlite datetime converter --- docs/tutorial/database.rst | 10 ++++++++++ examples/tutorial/flaskr/db.py | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/docs/tutorial/database.rst b/docs/tutorial/database.rst index 934f6008..93abf93a 100644 --- a/docs/tutorial/database.rst +++ b/docs/tutorial/database.rst @@ -37,6 +37,7 @@ response is sent. :caption: ``flaskr/db.py`` import sqlite3 + from datetime import datetime import click from flask import current_app, g @@ -132,6 +133,11 @@ Add the Python functions that will run these SQL commands to the init_db() click.echo('Initialized the database.') + + sqlite3.register_converter( + "timestamp", lambda v: datetime.fromisoformat(v.decode()) + ) + :meth:`open_resource() ` opens a file relative to the ``flaskr`` package, which is useful since you won't necessarily know where that location is when deploying the application later. ``get_db`` @@ -142,6 +148,10 @@ read from the file. that calls the ``init_db`` function and shows a success message to the user. You can read :doc:`/cli` to learn more about writing commands. +The call to :func:`sqlite3.register_converter` tells Python how to +interpret timestamp values in the database. We convert the value to a +:class:`datetime.datetime`. + Register with the Application ----------------------------- diff --git a/examples/tutorial/flaskr/db.py b/examples/tutorial/flaskr/db.py index acaa4ae3..dec22fde 100644 --- a/examples/tutorial/flaskr/db.py +++ b/examples/tutorial/flaskr/db.py @@ -1,4 +1,5 @@ import sqlite3 +from datetime import datetime import click from flask import current_app @@ -44,6 +45,9 @@ def init_db_command(): click.echo("Initialized the database.") +sqlite3.register_converter("timestamp", lambda v: datetime.fromisoformat(v.decode())) + + def init_app(app): """Register database functions with the Flask app. This is called by the application factory.