擅长:python、mysql、java
<p>我终于在这里找到了答案:</p>
<p><a href="https://stackoverflow.com/questions/7559570/make-sqlalchemy-commit-instead-of-rollback-after-a-select-query?rq=1">Make SQLAlchemy COMMIT instead of ROLLBACK after a SELECT query</a></p>
<pre><code>def getDocPrefixes(self, deviceId):
f = sq.sql.func.doc_codes(deviceId, type_=types.String)
columns = [
sq.Column('name', types.String),
sq.Column('sufix', types.String)
]
with self.con.begin():
return [dict(x.items()) for x in self.con.execute
(
select(columns).
select_from(f)
).fetchall()]
</code></pre>
<p>问题是,函数可以插入data+还返回SELECT,因此,sqlalchemy认为这是一个正常的SELECT,而实际上函数也更改了数据并需要提交。</p>