python引用和对象的分离_使用SQLAlchemy从应用程序正确分离模型的Python方法

我很难让我的应用程序运行。每当我尝试将软件包中的模块分开时,Flask-SQLAlchemy扩展都会创建一个空数据库。为了更好地解释我在做什么,让我展示一下我的项目的结构:

Project

|

|-- Model

| |-- __init__.py

| |-- User.py

|

|-- Server

| |-- __init__.py

|

|-- API

| |-- __init__.py

这个想法很简单:我想为我的模型创建一个程序包,因为我不希望将代码分散在一个程序包中,而希望将代码分别放在各个“子”项目(如API)中,因为将来我将使用蓝图来更好隔离子应用。

代码很简单:

首先,Model.__init__.py:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

请注意,我创建此文件仅是为了SQLAlchemy()在整个包中使用单个对象。不,我们去Model.User

from Model import db

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

Name = db.Column(db.String(80))

Age = db.Column(db.Integer)

...

再次注意来自模型导入数据库的信息,该模型用于允许相同的数据库对象。

最后,Server.init.py像这样:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

import Model, API

db = Model.db

def main():

app = Flask("__main__")

db = SQLAlchemy(app)

db.create_all()

API.SetAPIHookers(app)

app.run(host="0.0.0.0", port=5000, debug=True)

if __name__ == "__main__":

main()

从我的角度来看,db = SQLAlchemy(app)允许我传递我的应用程序对象而无需创建循环引用。

问题是,每当我运行此代码时,sqlite数据库文件都会被创建为空。那让我认为也许Python不会像我想的那样导入东西。因此,我通过删除导入模型并直接在Server中创建用户来测试我的理论……瞧瞧,它起作用了!

现在出现了我的问题:是否存在一种“ pythonic”方式来正确分离所需的模块,还是应该将所有内容都放在同一软件包中?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值