私はflask sqlalchemyを使用しています。しかし、コマンドラインでデバッグすると、私はsession.execute
エラーを発見しました。MySQL用にsession.executeを使用してクエリできません
Stock ='SHELL'
>>> db.session.execute("SELECT * FROM KJ WHERE Stock LIKE %s",(Stock,))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/scoping.py", line 149, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/orm/session.py", line 978, in execute
clause, params or {})
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/engine/base.py", line 720, in execute
return meth(self, multiparams, params)
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/sql/elements.py", line 317, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/usr/local/lib/python3.4/dist-packages/sqlalchemy/engine/base.py", line 793, in _execute_clauseelement
keys = distilled_params[0].keys()
AttributeError: 'tuple' object has no attribute 'keys'
私はdb.engine.executeを使用していた場合、それは私がカーソルが実行使用して、のMySQLdbをインポートする場合、それはあまりにも正常に動作し、また、エラーなしで正しく
db.engine.execute("SELECT * FROM KLSE WHERE Stock LIKE %s",(Stock,))
に動作します。
curs.execute("SELECT * FROM KJ WHERE Stock LIKE %s",(Stock,))
私が疑われる問題がsession.execute
のための在庫と一致していない%sです。私はsqlalchemyドキュメントを見ていますが、理解していません。
ドキュメントから http://docs.sqlalchemy.org/en/latest/orm/session_api.html
あなたの選択で余分なカンマを取り出してみましたか?WHERE Stock LIKE% (在庫)) ' - >' WHERE Stock LIKE%s '、(在庫)) ' –
はい、同じエラーで動作していません – vindex