Registry / database / wtforms-sqlalchemy

wtforms-sqlalchemy

JSON →
library0.4.2pypypi✓ verified 85d ago

SQLAlchemy utilities for WTForms, including model form generation, query-based choice fields, and integration with SQLAlchemy ORM. Current version 0.4.2, requires Python >=3.9. Release cadence is sporadic.

pip install wtforms-sqlalchemy
INSTALL
IMPORT
SIG · WTFORMS-SQLALCHEMY
W
wtforms-sqlalchemy
databasepythonv0.4.2
Install
3.4s avg
Import
881ms
Disk
42MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.4.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.930s · 44.2MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 3.4s · import 0.832s · 42MB
42MB installed
● package 42MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

QuerySelectField
from wtforms_sqlalchemy.fields import QuerySelectField
from wtforms.ext.sqlalchemy.fields import QuerySelectField
Old path from Flask-WTF; removed in wtforms-sqlalchemy 0.4
ModelForm
from wtforms_sqlalchemy.orm import model_form
from flask_wtf import FlaskForm
ModelForm class replaced by model_form factory function

Create a form model from a SQLAlchemy declarative model using model_form.

from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import DeclarativeBase from wtforms import Form, StringField from wtforms_sqlalchemy.orm import model_form class Base(DeclarativeBase): pass class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) engine = create_engine('sqlite:///:memory:', echo=False) Base.metadata.create_all(engine) UserForm = model_form(User, base_class=Form, exclude=['id']) form = UserForm(data={'name': 'Alice'}) print(form['name'].data) # Alice
Debug
Known issues
breaking0.4 removed the old Flask-WTF compatibility layer. Imports from wtforms.ext.sqlalchemy no longer work.
fix
Use wtforms_sqlalchemy.fields and wtforms_sqlalchemy.orm instead.
affects: 0.4.x
deprecatedModelForm class (from wtforms_sqlalchemy.orm) is deprecated in 0.4.2 and slated for removal. Use the model_form() factory function instead.
fix
Replace ModelForm subclass with model_form(Model, base_class=Form, ...).
affects: >=0.4.0
gotchaQuerySelectField and QuerySelectMultipleField require a query factory, not a static query. Passing a SQLAlchemy query object will raise 'BaseQuery object is not callable'.
fix
Pass a lambda that returns the query, e.g., query_factory=lambda: session.query(Model).
affects: all
Errors
Common errors & fixes
ImportError: cannot import name 'QuerySelectField' from 'wtforms.ext.sqlalchemy'
Old import path from Flask-WTF; removed in wtforms-sqlalchemy 0.4
fix
Use 'from wtforms_sqlalchemy.fields import QuerySelectField'
TypeError: 'BaseQuery' object is not callable
Passing a static query object instead of a callable query factory to QuerySelectField
fix
Use query_factory=lambda: session.query(Model) or query_factory=Model.query (if Flask-SQLAlchemy)
AttributeError: module 'wtforms_sqlalchemy' has no attribute 'orm'
Installed version is too old (pre-0.4) or installation is incomplete
fix
Update to >=0.4.2: pip install --upgrade wtforms-sqlalchemy
Upgrade
Version history
0.4.2latest on PyPI · released Oct 25, 2024
Audit
Dependencies
SQLAlchemyrequiredCore dependency
WTFormsrequiredCore dependency
Agent activity
26 hits · last 30 days
node
22
Meta
2
OpenAI (training)
1
Resources
wtforms-sqlalchemy — pip install wtforms-sqlalchemy · libregistry