bprinty / flask-continuum Goto Github PK
View Code? Open in Web Editor NEWModel provenance and versioning via SQLAlchemy-Continuum
Home Page: https://flask-continuum.readthedocs.io/en/latest/
License: MIT License
Model provenance and versioning via SQLAlchemy-Continuum
Home Page: https://flask-continuum.readthedocs.io/en/latest/
License: MIT License
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_continuum import Continuum, VersioningMixin
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy()
continuum = Continuum()
def create_app():
db.init_app(app)
continuum.init_app(app, db)
return app
class Article(db.Model, VersioningMixin):
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.Unicode(255))
content = db.Column(db.UnicodeText)
if __name__ == '__main__':
app = create_app()
app.run()
# my env set up
# Flask==2.2.3
# Flask-Continuum==0.1.7
# Flask-SQLAlchemy==3.0.3
#
# Python 3.10.6
# OS Ubuntu 22.04.2 LTS
### when I run the app it rises this issue
Traceback (most recent call last):
File "/home/me/project/app.py", line 18, in
app = create_app()
File "/home/me/project/app.py", line 14, in create_app
continuum.init_app(app, db)
File "/home/me/project/venv/lib/python3.10/site-packages/flask_continuum/plugin.py", line 168, in init_app
if db.app is None:
File "/home/me/project/venv/lib/python3.10/site-packages/flask_sqlalchemy/extension.py", line 1005, in getattr
raise AttributeError(name)
AttributeError: app
After playing with flask-migrate and adding Flask-Continuum, I decided to start with Flask-Continuum, then add flask-migrate, but I can't get Flask-Continuum to work from the documentation.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_continuum import Continuum
app = Flask(__name__)
db = SQLAlchemy(app)
continuum = Continuum(app, db)
from flask_continuum import VersioningMixin
# defining database schema
class Article(db.Model, VersioningMixin):
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.Unicode(255))
content = db.Column(db.UnicodeText)
All I did was combine the two minimal app examples, then ran the following:
$ flask shell
>>> from app import db, Article
>>> article = Article(name='Some article', content='Some content')
>>> db.session.add(article)
>>> db.session.commit()
[...]
sqlite3.OperationalError: no such table: transaction
[...]
What am I missing?
Thanks.
I just added Flask-Continuum to a project using flask-migrate and received the following:
flask db migrate -m 'Add continuum.'
[...]
INFO [alembic.env] No changes in schema detected.
Using the sqlalchemy-continuum documentation, I added the following:
from sqlalchemy import orm
[...]
orm.configure_mappers()
This allowed a successful migration:
flask db migrate -m 'Add continuum.'
[...]
INFO [alembic.autogenerate.compare] Detected added table 'transaction'
[...]
The following is my test app. I used the flask-migrate documentation as the starting point, then added Flask-Continuum.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_continuum import Continuum, VersioningMixin
from flask_migrate import Migrate
from sqlalchemy import orm
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
continuum = Continuum(app, db)
migrate = Migrate(app, db)
class User(VersioningMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(123))
orm.configure_mappers()
pip install flask-continuum
does not install sqlalchemy_continuum
which results in:
127.0.0.1 - - [28/Apr/2020 16:28:13] "GET / HTTP/1.1" 500 -
Traceback (most recent call last):
File "/Users/volker/PycharmProjects/verivinum-core-api/app.py", line 25, in <module>
from flask_continuum import Continuum
File "/Users/volker/PycharmProjects/verivinum-core-api/venv/lib/python3.7/site-packages/flask_continuum/__init__.py", line 11, in <module>
from .mixins import VersioningMixin ## noqa
File "/Users/volker/PycharmProjects/verivinum-core-api/venv/lib/python3.7/site-packages/flask_continuum/mixins.py", line 11, in <module>
from sqlalchemy_continuum import changeset, count_versions, is_modified
ModuleNotFoundError: No module named 'sqlalchemy_continuum'
Installing flask-continuum with pip should automatically install sqlalchemy_continuum
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.