我的引擎有一个属性dMeta,返回引擎元,然后我有一个类,有一个方法调用table,基本上这样做:
def table(meta):
return Table('table1',meta,autoload=True,schema=genShema())
Run Code Online (Sandbox Code Playgroud)
我正在自动加载表格:
t = SomeClass.table(engine.dMeta)
sql = select([t.c.ID, t.c.OPIS, t.c.IDG,
func.left(t.c.ID,2).label("Ident"),
(func.left(t.c.ID,2).label('Ident2')+' '+t.c.OPIS).label("show_as")])\
.where(t.c.ATRIBUT=="VPFA")
Run Code Online (Sandbox Code Playgroud)
SQLAlchemy给出了以下错误:
def __getattr__(self, key):
try:
return self._data[key]
except KeyError:
raise AttributeError(key)
Run Code Online (Sandbox Code Playgroud)
关键是ID,self._data contains'ID'= {Column}是一个table1.ID如果我把self._data[key]我得到正确的值,没有错误,那么这里有什么问题?
即使我重新运行代码几次,有时它会中断,有时它不会:/
我有两个文件需要从中获取data analysis. 我正在Python Pandas为此使用。任何有关如何执行此操作的帮助将不胜感激。
我已经知道如何使用 Python 合并 2 个文件 - 我PANDAS特别期待完成这项工作。
合并 2 个文件后,我需要从中获取一些分析数据。这两个文件在CSV格式上确实具有相同的数据结构。
目前我正在使用以下视图方式来确定请求是否为AJAX / XHR。因此,我正在返回 json 数据并在 Flask 中呈现模板文件。这在我的应用程序中非常有效。
from flask import request, render_template, jsonify
@cinemascope.route('/cinema')
def cinema():
if request.is_xhr:
cinema = Cinema.query.all()
return jsonify({'cinema_scope': cinema})
return render_template('cinema.html')
Run Code Online (Sandbox Code Playgroud)
但是我认为这种方式没什么问题,因为我的应用程序可能会更多 @app.routes 并且每次我都必须重复代码(if 子句),因此它失去了可维护性方面。
我正在考虑这里的两个选项 -
选项#1 - 编写一个简单的函数来包装上面路由中的 if 子句。
选项#2 - 编写一个装饰器来确定请求,因此可以从路由中调用它 - 以某种方式装饰器将处理代码的冗余部分。到目前为止,我对编写自定义装饰器知之甚少,尽管在阅读很少之后似乎是最好的选择。
将理解采用任何上述方法的任何进一步方向。
基本上我想知道方法 - 所以我可以避免if clause每个@app.route 中的部分代码。