lektor.db.
Pad
The Pad
is a helper class that provides basic access to querying the
database. Inside templates an instance of it is available under the
site
variable automatically.
To understand what the pad does you need to consider what it does. The
pad is similar to a connection
in a regular database. Whenever you
load a record it's temporarily cached on the pad. So unless you overflow
the cache, loading the object a second time will most likely return an
already loaded instance from the pad. This also means that the pad
is not threadsafe. So if you want (for whatever reason) use multiple
threads you have to create a separate pad for each thread.
This typically only comes up in the context of plugins or more complex command line scripts.
A ready-configured pad is always available under the site
name which
allows you to easily discover other pages. Here is a basic example of
how to do this through the get method:
{% set root = site.get('/') %}
<title>{{ this.title }} | {{ root.title }}</title>
Within plugins it's typically not a good idea to construct a new Pad. Instead you can get access to the current pad from the active context:
from lektor.context import get_ctx
ctx = get_ctx()
if ctx is not None:
pad = get_ctx().pad
Note that you can only get access to a pad if a context is available. This will not be the case when the plugin is currently being initialized for instance.
If you want to work with the database from a script, you can create a pad from the Environment with the help of the new_pad method:
from lektor.project import Project
project = Project.discover()
env = project.make_env()
pad = env.new_pad()
root_record = pad.root
Returns the root object of a specific alternative.
Creates a query at a specific path.
Resolves a URL path to a into a source object.
Returns the root object of the primary alternative.
Comments