python-3.x - 服务层的Python烧瓶目录结构?
问题描述
我是一名 aspnet 核心开发人员,正在尝试使用烧瓶框架在 python 中做一个测试项目。但由于我对 python 项目的结构缺乏了解,我很难编译它。我不明白如果我将我的 python 文件保存在另一个目录中,为什么它会在意。在 C# 中,您可以访问同一命名空间内的所有类,而无需导入任何内容。
这是我的python烧瓶项目结构的样子。我似乎无法以这种方式工作。我正在尝试将我的home_service.py导入到home.py文件中,其中存在家庭路由(in aspnet's term controller
),并且似乎也无法访问记录器。而且home_service.py也不能导入db_util.py。
请任何python烧瓶专家指导我正确的方向?
/../../Projects/flask-test-project
├── test-project/
│ ├── __init__.py
│ └── static/
│ └── site.css
│ ├── templates/
│ │ ├── layout.html
│ │ ├── home.html
│ │ ├── offerings.html
│ │ ├── login.html
│ │ ├── register.html
│ │ ├── 404.html
│ │ ├── 500.html
│ ├── views/
│ │ ├── __init__.py
│ │ ├── home.py
│ │ ├── offerings.py
│ │ ├── login.py
│ │ ├── register.py
│ ├── service/
│ │ ├── home_service.py
│ │ ├── db_util.py
├── flask-venv-for-ubuntu/
├── requirements.txt
└── run.py
**run.py**
from test-project import app
from datetime import datetime
import logging
todays_date = datetime.today().strftime('%Y%m%d')
logging.basicConfig(filename='error'+ todays_date+'.log',level=logging.Trace)
app.run(debug=True)
app.logger.trace(“Inside run.py”)
**__init__.py**
from flask import g, Blueprint, request
from psycopg2
# $ pip install sentry-sdk[flask]
from werkzeug.exceptions import HTTPException
app = Flask(__name__)
@app.errorhandler(404)
def not_found(error):
return render_template('404.html')
@app.errorhandler(HTTPException)
def handle_exception(e):
app.logger.error(e)
return render_template(“500.html”)
@app.teardown_appcontext
def close_connection():
db = getattr(g, '_database', None)
if db is not None:
db.close()
from test-project.views import home
from test-project.views import login
from test-project.views import register
from test-project.views import offerings
app.register_blueprint(home.mod)
app.register_blueprint(login.mod)
app.register_blueprint(register.mod)
app.register_blueprint(offerings.mod)
**db_util.py**
from flask import g
import psycopg2
POSTGRES_CONNECTIONSTRING = “……...”
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = psycopg2.connect(POSTGRES_CONNECTIONSTRING)
return db
def query_db(query, args=(), one=False):
try:
cur = get_db().execute(query, args)
rv = cur.fetchall()
cur.close()
return (rv[0] if rv else None) if one else rv
finally:
if(cur)
cur.close()
**home_service.py**
import db_util
def get_something
app.logger.Debug(“get_something started”)
return query_db(“select count(*) as myCount from table1;”)
**home.py**
import home_service
mod = Flask(“home”,__name__)
@mod.route(“/something”)
def something():
app.logger.Debug(“get_something started”)
return render_template(“home.html”, count_of_table1=get_something().myCount)
请不要推荐我使用 SQLAlchemy 或任何其他形式。我想按照我的方式去做。谢谢!
解决方案
推荐阅读
- discord.py - 在 embed.fields.0.value: This field is required 错误
- spring - 在springframework数据4中找不到“UpdateQueryBuilder”
- javascript - 使用 fetch 响应后重定向到某个路由?
- swiftui - swiftUI onDelete。试图在被删除的行中的结构中找到一个项目
- android - 我正在为我的 RecyclerView 获得一个空指针,可能是因为我的上下文
- shell - 强制并行子 shell 退出主 shell
- angular - 数据绑定 ngModel 在 Angular 12 中不起作用
- javascript - 尝试使用 mongodb/mongoose 计算集合中标签的每个实例
- typescript - 破坏 json 错误属性“xxx”在可选类型的类型上不存在
- excel - Arduino Uno、PLX-DAQ 和 125Khz RFID 阅读器问题