深入研究Python-Flask源码:flask_sqlalchemy中SQLAlchemy(object)类

小编从事python-flask框架的后端开发,为了吃透它,小编会不断的深入研究源码,今天从 flask_sqlalchemy中SQLAlchemy(object)类开始深入研究。

class SQLALchemy(object):
    """
    该类用于将SQLAlchemy集成为一个或更多的Flask应用,取决于你如何去初始化一个有效的对象,或者你可以根据需要将它依附在Flask应用中使用。
    有两种使用模式非常相似。
第一种是绑定实例到一个非常具体的Flask应用程序:
        应用=Flask(__name__)
        db = SQLAlchemy(应用)
第二种是一次性创建对象并配置后面的应用程序来支持它:
        db = SQLAlchemy()
        def create_app():
            app = Flask(__name__)
            db.init_app(app)
            return app
两者的区别在于,在第一种情况下,方法是:' create_all '和' drop_all '将一直工作,但在第二种情况下,Flask.app_context必须存在。默认情况下,Flask-SQLAlchemy将应用一些特定于后端的设置提高你与他们的经验。SQLAlchemy为0.6 SQLAlchemy将探测库以获得本机unicode支持。如果它检测到unicode,它会让库处理它,否则它自己做。有时检测可能会失败,在这种情况下,您可能希望设置'' use_native_unicode ''(或' SQLALCHEMY_NATIVE_UNICODE '配置“FALSE”键)。注意,配置键覆盖将值传递给构造函数。
该类还提供对所有SQLAlchemy函数和类的访问
来自: ' sqlalchemy '和: ' sqlalchemy '。orm的模块。所以你可以这样声明模型类用户(db.Model):
        用户名= db.Column(db.String(80), unique=True)
您仍然可以使用:' sqlalchemy '和' sqlalchemy.orm',但注意Flask-SQLAlchemy定制只能通过类的实例:' SQLAlchemy '类。查询类默认为类:“BaseQuery”的数据库。查询”、“db.Model。和默认query_class“db。关系”和“db.backref”。如果你用这些通过:mod: ' sqlalchemy '和:mod: ' sqlalchemy。orm的直接,默认的查询类是:' sqlalchemy '。
 .警告:仔细检查类型
不要对“db”执行类型或“isinstance”检查。表”,
模拟“表”行为,但不是类。db。表的暴露了
“表”接口,但它是一个允许遗漏元数据的函数。
“session_options”参数(如果提供的话)是参数的字典
要传递给会话构造函数。看到:类:“~ sqlalchemy.orm.session.Session”
用于标准选项。
. .versionadded::0.10
添加了' session_options '参数。
. .versionadded::0.16
“scopefunc”现在被“session_options”接受。它允许指定
自定义函数,它将定义SQLAlchemy会话的范围。
. .versionadded::2.1
添加了“元数据”参数。这允许设置自定义
命名约定以及其他重要的事情。
. .versionadded::3.0
添加了“query_class”参数,以允许定制
替换:class: ' BaseQuery '的默认值。
添加了“model_class”参数,允许自定义模型
类用于代替:class: ' Model '。
. .versionchanged::3.0
跨“会话”、“模型”使用相同的查询类。查询”和“查询”。
”“”
    """

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值