我目前正在使用 SQLAlchemy ORM 来处理我的数据库操作。现在我有一个需要ON CONFLICT (id) DO UPDATE. 该方法on_conflict_do_update()似乎是正确的使用方法。但这里的帖子说代码必须切换到 SQLAlchemy 核心,并且缺少高级 ORM 功能。我对这个说法感到困惑,因为我认为像下面的演示这样的代码可以实现我想要的,同时保留 SQLAlchemy ORM 的功能。
class Foo(Base):
...
bar = Column(Integer)
foo = Foo(bar=1)
insert_stmt = insert(Foo).values(bar=foo.bar)
do_update_stmt = insert_stmt.on_conflict_do_update(
set_=dict(
bar=insert_stmt.excluded.bar,
)
)
session.execute(do_update_stmt)
Run Code Online (Sandbox Code Playgroud)
我还没有在我的项目上测试它,因为它需要大量的修改。请问这是否是处理ON CONFLICT (id) DO UPDATESQLALchemy ORM 的正确方法?
我试图让我的 Flask 程序监听端口 5000,以下是主要部分app/app.py:
app = Flask(__name__)
@app.route('/')
def index():
app.logger.info("Receiving a request")
if (request.method == "POST"):
query = request.args.get("query")
file = request.files['file']
app.logger.info(query)
filePath = '/tmp/tmpDoc'
# write something to file
searchResult = bootLoader.run(filePath, query)
ans = searchResult['answers']
return jsonify(ans)
return "hihi"
if __name__ == "__main__":
app.run(debug=True, port=5000)
Run Code Online (Sandbox Code Playgroud)
和我的wsgi.py
from app.app import app
if __name__ == "__main__":
app.run(debug=True, port=5000)
Run Code Online (Sandbox Code Playgroud)
我使用gunicorn by 运行程序gunicorn wsgi:app,但调试功能和指定端口都不起作用。这是日志:
[2021-02-09 16:50:58 +0800] [62555] [INFO] Starting gunicorn 20.0.4
[2021-02-09 16:50:58 +0800] …Run Code Online (Sandbox Code Playgroud)