migration extra. A published package with the same version number can expose a different API. Check compatibility →1. Prepare the example
You need Python 3.11 or later and SQLite 3.35 or later. Install the development checkout used by the course:
# Replace the path with your matching Asqueel source checkout.
python -m pip install -e "/path/to/asqueel[migration]"
Download the console example ZIP and extract it. Run the following commands from the directory containing console-demo.
asqueel check ./console-demo
The configuration declares one table, invc.region, with code as its primary key and name as a text column. The offline check validates the configuration; it does not create a database.
2. Create the schema
Review the SQL plan, then apply it.
asqueel db plan ./console-demo
asqueel db apply ./console-demo
The example creates console.db and the attached schema file invc.db inside the example directory. The configuration also accepts an absolute path through ASQUEEL_SQLITE_FILE.
3. Open the REPL
asqueel shell ./console-demo
The console tells you that db is ready. You can also register the configuration once and reopen it by name:
asqueel register console-demo ./console-demo
asqueel shell console-demo
python -m asqueel runs the same CLI.
4. Insert a record
At the Python prompt, get the table and insert a plain dictionary:
region = db.table('invc.region')
region.insert({'code': 'NO', 'name': 'North'})
db.commit()
The keys of the dictionary are column names, without $. The commit saves the change. Use a different code when repeating the insert: code is a primary key.
5. Build, inspect and run a query
query = region.query(
columns='$code, $name',
where='$code = :code',
code='NO',
)
print(query.sqltext)
rows = query.fetch()
print([dict(row) for row in rows])
The result is:
[{'code': 'NO', 'name': 'North'}]
$code refers to a model column. :code is a bound value. Compiling with sqltext does not open a connection; fetch() executes the query.
6. Finish the session
db.rollback() # Finish the read transaction.
Press Ctrl-D to leave the console. Pending changes are rolled back and the connection is released; exiting never performs an implicit commit.
You can remove the two local database files later if you no longer need the example.