Est*_*ber 6 python version-control sqlalchemy directory-structure
我正在使用SQLAlchemy和wxPython开发一个应用程序,我试图将其分布在由业务逻辑,ORM和GUI组成的独立模块中.
我不完全确定如何以pythonic的方式做到这一点.
鉴于mapping()必须在其他地方调用以供使用的对象,我想把它放在__init__.py业务逻辑上,但将所有表定义保存在一个单独的orm.py模块中.
我应该保留以下内容:
/Business
/__init__.py
| mapping (module1.Class1, orm.table1)
|
/module1.py
Class1
/orm.py
import
table1 = Table()
/GUI
/main.py
| import business
/crud.py
Run Code Online (Sandbox Code Playgroud)
或类似的东西
/Business
/__init__.py
| import
|
/module1.py
Class1
table1 = Table()
mapping (module1.Class1, orm.table1)
/GUI
/main.py
| import business
/crud.py
Run Code Online (Sandbox Code Playgroud)
是第一种推荐的方法吗?还有其他选择吗?我已经看到了第二种方式,但我不喜欢将数据库处理代码和业务逻辑代码放在同一个模块中.我是否在思考它?真的不是那么大的问题吗?
我发现Jp Calderone的这篇文章是关于如何(不)构建你的python项目的一个很好的提示.在它之后你将不会有问题.我将在这里重现整个文本:
Python项目的文件系统结构
做:
- 将目录命名为与项目相关的内容.例如,如果您的项目名为" Twisted ",请为其源文件命名顶级目录
Twisted.执行发布时,应包含版本号后缀:Twisted-2.5.Twisted/bin如果有的话,创建一个目录并将可执行文件放在那里..py即使它们是Python源文件,也不要给它们扩展.除了导入和调用项目中其他地方定义的main函数之外,不要在其中添加任何代码.- 如果您的项目可以表示为单个Python源文件,那么将其放入目录并将其命名为与项目相关的内容.例如,
Twisted/twisted.py.如果您需要多个源文件,请改为创建一个包(Twisted/twisted/,使用空Twisted/twisted/__init__.py)并将源文件放入其中.例如,Twisted/twisted/internet.py.- 将您的单元测试放在包的子包中(注意 - 这意味着上面的单个Python源文件选项是一个技巧 - 您总是需要至少一个其他文件用于您的单元测试).例如,
Twisted/twisted/test/.当然,让它成为一个包Twisted/twisted/test/__init__.py.将测试放在像Twisted/twisted/test/test_internet.py.- 添加
Twisted/README和Twisted/setup.py分别解释和安装你的软件,如果你感觉很好.不要:
- 将您的源放在名为
src或的目录中lib.这使得在没有安装的情况下很难运行.- 把你的测试放在你的Python包之外.这使得难以针对已安装的版本运行测试.
- 创建一个只包含a
__init__.py然后将所有代码放入的包__init__.py.只需制作一个模块而不是一个包,它就更简单了.- 尝试提出神奇的黑客攻击,使Python能够导入您的模块或包,而无需用户将包含它的目录添加到其导入路径(通过
PYTHONPATH或其他一些机制).您将无法正确处理所有情况,当您的软件无法在其环境中工作时,用户会对您生气.
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |