我有以下目录结构的烧瓶中的应用:的Python干净进口车型 - SQL炼金术
- MYAPP/
- application.py
__init__.py
- 型号/
__init__.py
- user.py
这款机型采用烧瓶SQLAlchemy的,因此,他们需要从application.py
user.py有机会获得db
对象(例如SQLAlchemy的):
import sys,os
sys.path.append('/path/to/application/package')
from testapp import db
class User(db.Model):
id = db.Column(db.Integer,primary_key=True)
username = db.Column(db.String(255),unique=True)
age = db.Column(db.Integer)
def __init__(self,username,age):
self.username = username
self.age = age
def __repr__(self):
return '<User %r>' % self.username
由于任何模型都需要访问应用程序的SQLAlchemy实例db
属性,所以我必须将此整个包放到第e路径,然后从主应用程序模块导入。为了理智,我想将模型保存在单独的文件中。我需要将路径代码放在每个模型的顶部吗?有没有更好的办法?我宁愿没有像这样的完整路径输入,因为它们可能被部署到具有不同目录结构的不同主机。理想情况下,会有一些内部处理路径的方式,因此当它作为另一个用户通过mod_wsgi
使用时,我不必手动更改代码。
我喜欢!有一个问题......如果我在'__main__'条件中的每个模型文件中都有测试逻辑,那么它们可能不会以这种方式运行。我应该把单元测试放在根目录下,对吧? – DeaconDesperado 2012-07-20 13:47:27
您可以使用Flask-Script扩展,您的测试将通过./application.py提供。将测试代码留在它的模块中(对于小型测试来说它更好,更简单),但是将它与Flask-Script的装饰器一起使用,它将创建一个命令。 ...你也可以创建一个装饰器,它将把测试函数添加到某个全局列表中,以便一次全部运行它们(通过命令,或者仅在调试模式下启动时)。 –
HighCat
2012-07-20 14:54:36
可以链接到显示第一个示例的项目吗? – Mbrevda 2013-05-29 14:46:16