zoukankan      html  css  js  c++  java
  • Flask-SQLALchemy

    from sqlalchemy.ext.declarative import declarative_base
    Base = declarative_base()
    class Users(Base):
    
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy import create_engine
    engine = create_engine('mysql+pymysql://<账号>:<密码>@localhost:3306/plus2', max_overflow=5)
    session=sessionmaker(engine)()
    Base.metadata.create_all(engine)         #创建表    
    Base.metadata.drop_all(engine)             #删除表
    

    https://blog.csdn.net/aimill/article/details/80711685
    https://www.cnblogs.com/franknihao/p/7268752.html

    flask_sqlalchemy 要求 每个模型都要定义主键。primary_key=True

    db.relationship()的第一个参数表明这个关系的另一端是哪个模型。backref参数在关系的另一个模型中添加反向引用。

    pymysql.err.InternalError: (3734, "Failed to add the foreign key constraint. Missing column 'ID' for constraint 'stock_in_ibfk_1' in the referenced table 'materials'")
    遇到这个错误卡了很久很久。
    我已经在mysql数据库上创了一个数据库,里面有几张先前定义的表,之后在那基础上更改了模型,对某几个列属性添加了外键,却发现数据库迁移失败,起初我还以为是我对sqlalchemy的外键用法用错了,就去看了很多关于relationship 和 ForeignKey 的用法。确保无误后还是无法迁移数据库。最后我把原先在那个数据库中的表都删除了,再一次migrate,结果就成功了。
    
    username = db.Column('user_name', db.String(255))
    在db.Column的构造函数里,第1个参数是可选的,通过这个参数我们可以指定该属性在数据库中的字段名。如果没有指定,则SQLAlchemy会认为字段名与这个属性的名字是一样的。
    

    三元表达式在Flask SQLAlchemy多条件模糊查询的应用

    user = User.query.filter(User.name.like("%"+搜索的内容+"%"), User.age.like("%"+搜索的内容+"%"))
    
    这样做需要确保搜索的内容不得为空,且我们必须要根据搜索的内容来确定进行搜索的字段,这样子5个条件如果进行if else判断的话就有2^5,即​32种可能,这是相当麻烦的一件事情,不过我发现,filter函数如果搜索条件为空的时候,即“”的时候都能够正常的列出搜索的内容,因此便考虑可以使用三元表达式来实现判断如果表单传过来的值是控制的话搜索条件变为“”,不然的话就是User.name.like("%"+搜索的内容+"%")。
    
    具体是这么写:
    
    search 是存放搜索内容的变量​
    
    user = ​User.query.filter(User.name.like("%"+search+"%") if search is not None else "", User.age.like("%"+search+"%") if search is not None else "")
    
    这个样子,原本需要N多情况判断的模糊查询用一句话就可以了。
    https://www.jianshu.com/p/a4de47d668e3
    
    如果数据库表已经存在于数据库中,那么db.create_all()不会重新创建或更新相应的表
    

    flask_sqlalchemy 如何只查询某一列的数据

    加上with_entities()
    data=Material.query.with_entities(Material.name).all()
    print(data,type(data))
    return jsonify({'data': data})
    >>>data
    >>>[('aa',), ('bb',), ('aa ee cc gg ',), ('aa1',), ('aa2',), ('aa3',), ('aa4',), ('100nf',), ('jj',)] <class 'list'>
    
  • 相关阅读:
    linux磁盘简介
    linux用户管理、su和sudo、文件权限、SUID/SGID/SBIT
    dubbo框架的使用方法。。。
    Linux 配置 dubbo 和 dubbo的简单介绍。
    单列模式简单介绍
    Linux配置zookeeper 和zookeeper简单介绍
    Linux配置 ftp 和 ftp简单介绍
    正向代理 、反向代理, 和 Linux系统配置nginx。
    Linux配置Redis集群 和 缓存介绍。
    Linux 集群 和免秘钥登录的方法。
  • 原文地址:https://www.cnblogs.com/plusUltra/p/10583712.html
Copyright © 2011-2022 走看看