Commands¶
Guillotina comes with a great set of commands you can use to help debug and inspect your install.
We’ve already gone through the serve
, create
and testdata
commands so we’ll
now cover shell
and run
.
Make sure to also read the commands reference in the docs to learn how to create your own commands.
Shell¶
The shell
command allows you to get an interactive prompt into guillotina.
From here, you can connect to the database, accees objects and commit new data.
g -c config.yml shell
Then, to connect to the database and get your container object.
txn = await use_db('db')
container = await use_container('container')
setup()
From here, you can access objects:
conversations = await container.async_get('conversations')
await conversations.async_keys()
Run¶
The run
command allows you to run a python script directly.
g -c config.yaml run --script=path/to/script.py
To utilize this, the script must have an async function named
run
inside it.
Example¶
In this example, we are going through all the conversations and adding a user to them.
from guillotina.transactions import transaction
async def run(container):
conversations = await container.async_get('conversations')
async for conversation in conversations.async_values():
if 'foobar' in conversation.users:
continue
async with transaction():
print(f'Fixing {conversation}')
conversation.users.append('foobar')
conversation.register() # register object with current transaction