- Python Pyramid - Discussion
- Python Pyramid - Useful Resources
- Python Pyramid - Quick Guide
- Python Pyramid - Deployment
- Python Pyramid - Security
- Python Pyramid - Logging
- Python Pyramid - Testing
- Command Line Pyramid
- Creating A Project Manually
- Python Pyramid - Package Structure
- Python Pyramid - Project Structure
- Python Pyramid - Creating A Project
- Python Pyramid - Cookiecutter
- Pyramid - Using SQLAlchemy
- Python Pyramid - Message Flashing
- Python Pyramid - Events
- Python Pyramid - Sessions
- Python Pyramid - Response Object
- Python Pyramid - Request Object
- Python Pyramid - Static Assets
- Pyramid - HTML Form Template
- Python Pyramid - Templates
- Python Pyramid - Route Prefix
- Python Pyramid - View Configuration
- Python Pyramid - Url Routing
- Pyramid - Application Configuration
- Python Pyramid - Hello World
- Pyramid - Environment Setup
- Python Pyramid - Overview
- Python Pyramid - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Python Pyramid - Creating A Project
It is assumed that a Pyramid virtual environment is up and running, and Cookiecutter is installed in it. The easiest way to create a Cookiecutter project is to use a pre-built starter template as per the following command −
cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout 2.0-branch
The template is downloaded and the user is asked about his choice of name of the project −
project_name [Pyramid Scaffold]: testproj repo_name [testproj]:
Then choose the template language.
Select template_language −
1 - jinja2 2 - chameleon 3 - mako Choose from 1, 2, 3 [1]: 1
Since we are famipar with jinja2, give 1 as the choice. Next, use SQLALchemy as the backend.
Select backend: 1 - none 2 - sqlalchemy 3 - zodb Choose from 1, 2, 3 [1]: 2
Inside the testproj folder, following file structure is created −
│ development.ini │ MANIFEST.in │ production.ini │ pytest.ini │ README.txt │ setup.py │ testing.ini │ ├───testproj │ │ pshell.py │ │ routes.py │ │ __init__.py │ │ │ ├───alembic │ │ │ env.py │ │ │ script.py.mako │ │ │ │ │ └───versions │ │ README.txt │ │ │ ├───models │ │ meta.py │ │ mymodel.py │ │ __init__.py │ │ │ ├───scripts │ │ initiapze_db.py │ │ __init__.py │ │ │ ├───static │ │ pyramid-16x16.png │ │ pyramid.png │ │ theme.css │ │ │ ├───templates │ │ 404.jinja2 │ │ layout.jinja2 │ │ mytemplate.jinja2 │ │ │ └───views │ default.py │ notfound.py │ __init__.py │ └───tests conftest.py test_functional.py test_views.py __init__.py
The outer testproj folder has an inner testproj package subfolder and tests package. The inner testproj subfolder is a package having models and scripts, subpackages, and static as well as templates folders.
Next, initiapze and upgrade the database using Alembic.
# Generate your first revision. alembic -c development.ini revision --autogenerate -m "init" # Upgrade to that revision. alembic -c development.ini upgrade head
Alembic is a pghtweight database migration tool for usage with the SQLAlchemy Database Toolkit for Python. The outer project folder will now show a testproj.sqpte database.
The development.ini file provides a default data for the database. Populate the database with it by the following command.
initiapze_testproj_db development.ini
The Cookiecutter utipty also generates the test suite in the tests package. They are based on PyTest package. Go ahead and see if the tests pass.
Pytest ================ test session starts ====================== platform win32 -- Python 3.10.1, pytest-7.1.2, pluggy-1.0.0 rootdir: F:pyram-env estproj, configfile: pytest.ini, testpaths: testproj, tests plugins: cov-3.0.0 collected 5 items tests est_functional.py .. [ 40%] tests est_views.py ... [100%] =============== 5 passed, 20 warnings in 6.66s ===============
Cookiecutter uses the Waitress server. The Pyramid apppcation is served on localhost s port 6543 by following command −
pserve development.ini Starting server in PID 67700. 2022-06-19 23:43:51,308 INFO [waitress:485][MainThread] Serving on http://[::1]:6543 2022-06-19 23:43:51,308 INFO [waitress:485][MainThread] Serving on http://127.0.0.1:6543
Open the browser and visit http://localhost:6543/ in it. The homepage of the newly created project will be displayed as follows −
Debug Toolbar
You can find a smaller Pyramid logo at the top right of the homepage. Cpck on it to open a new tab and a debug toolbar that provides lots of useful information about the project.
For example, the SQLAlchemy tab under the history heading shows the SQLAlchemy queries showing the structure of the model created from the default data in development.ini.
The Global heading again shows tabs such as Introspection, Routes, etc. as shown below. Cpck the "Routes" tab to see the routes and their matching patterns defined in the apppcation s configuration.
Advertisements