老男孩视频——flask_SQLAlchemy知识点

1.一个py文件中前面有个__all__ = ['’],表示这个py文件就只能导出这个类*,用处:如果一个py文件有很多东西、很多类,你只想让别人导入一个类,就用到__all__
2.flask SQLAlchemy进行查询时,其中label相当于as ,也就是换另一个名称。
查询数据库时
filter_by传参数,filter传表达式

r3 = session.query(Users).filter(Users.name == “alex”).all()
r4 = session.query(Users).filter_by(name=‘alex’).all()

~Users是指非这个条件

ret = session.query(Users).filter(Users.id.in_([1,3,4])).all()
ret = session.query(Users).filter(~Users.id.in_([1,3,4])).all()

通配符 mysql中%占很多字符, 下划线_占一个字符

ret = session.query(Users).filter(Users.name.like(‘e%’)).all()
ret = session.query(Users).filter(~Users.name.like(‘e%’)).all()

分组 如果对group_by之后的条件再做筛选,就用having

ret = session.query(
func.max(Users.id),
func.sum(Users.id),
func.min(Users.id)).group_by(Users.name).having(func.min(Users.id) >2).all()

连表 默认的join是inner join, isouter为true就是外连接, join里面的条件 默认是通过外键关联的。

ret = session.query(Person).join(Favor, isouter=True).all()

一次性添加多个对象到session中去,用add_all()

session.add_all([
Hobby(caption=‘乒乓球’),
Hobby(caption=‘羽毛球’),
Person(name=‘张三’, hobby_id=3),
Person(name=‘李四’, hobby_id=4),
])

git

公司开发系统上线,后出问题可以回退上一个版本

flask_script

自定义命令,写脚本。比如用于python manager.py runserver或者python manager.py runserver -h -p
(1)先 from flask_script import Manager
(2) 注册manager manager = Manager(app)
(3)

if __name__ == '__main__':
  			  manager.run()

manager.py 如下:

from flask import Flask
from flask_script import  Manager

app = Flask(__name__)
manager = Manager(app)

@manager.command
def custom(arg):
    """
    自定义命令,自定义脚本,相当于位置参数
    python manager.py custom 123
    :param arg:
    :return:
    """
    print(arg)

@manager.option('-n','--name', dest='name')
@manager.option('-u','--url', dest='url')
def cmd(name,url):
    """
    自定义命令   相当于关键字参数
    python manager.py cmd -n zhangweijian -u http://www.baidu.com
    :param arg:
    :return:
    """
    print(name,url)

@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    manager.run()

flask_migrate 数据库迁移

数据库迁移命名

python manager.py db init
python manager.py db migrate
python manager.py db upgrade

(1)先 from flask_migrate import Migrate,MigrateCommand
(2) 注册migrate migrate = Migrate(app)
(3)manager.add_command(‘db’, MigrateCommand)
每个数据库中有一个表是alembic_version,就是表的提交记录。对应的记录在migration文件夹里面

猜你喜欢

转载自blog.csdn.net/xili2532/article/details/90815137