less than 1 minute read

1. Flask Shell

flask shell
>>> from myapp import db
>>> from myapp.models import User, Post


>>> u = User(username='john', email=
... 'paduck@gamil.com')
>>> u
<User john>
>>> db.session.add(u)
>>> db.session.commit()

>>> u = User(username='bing', email='p@gmail.com')
>>> u
<User bing>
>>> db.session.add(u)
>>> db.session.commit()


>>> users = User.query.all()
>>> users
[<User john>, <User bing>]


>>> for u in users:
...     print(u.id, u.username, u.emadil)
...
1 john paduck@gamil.com
2 bing p@gmail.com


>>> p = Post(body="my first post", author=u)
>>> p
<Post my first post>
>>> p.author.email
'p@gmail.com'
>>> p.author
<User bing>
>>> db.session.add(p)
>>> db.session.commit()


>>> u.posts
<sqlalchemy.orm.dynamic.AppenderBaseQuery object at 0x10ea75e90>
>>> u.posts.all()
[<Post my first post>]
>>> posts = Post.query.all()
>>> for p in posts:
...     print(p.id, p.author.username)
...
1 bing

>>> User.query.order_by(User.username.desc())
<flask_sqlalchemy.BaseQuery object at 0x10eaabe50>
>>> User.query.order_by(User.username.desc()).all()
[<User john>, <User bing>]
>>> User.query.order_by(User.username.asc()).all()
[<User bing>, <User john>]


>>> users = User.query.all()
>>> for u in users:
...     db.session.delete(u)
...
>>> users

2. Set default setting

In main.py

from myapp import app, db
from myapp.models import User, Post

@app.shell_context_processor
def make_shell_context():
    return {'db': db, 'User': User, 'Post': Post}

Don’t need to do below steps anymore
>>> from myapp import db
>>> from myapp.models import User, Post

Categories:

Updated: