Ich benutze Kolben sqlalchemy. Beim Debuggen in der Befehlszeile habe ich jedoch festgestellt, dass session.execute
Fehler zurückgibt.Kann nicht mit session.execute für MySQL abfragen
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'
Wenn ich db.engine.execute verwende, funktioniert es richtig ohne Fehler
db.engine.execute("SELECT * FROM KLSE WHERE Stock LIKE %s",(Stock,))
Auch, wenn ich mysqldb importieren, mit Cursor ausführen, funktioniert es auch in Ordnung.
curs.execute("SELECT * FROM KJ WHERE Stock LIKE %s",(Stock,))
das Problem, das ich vermute, ist das% s ist nicht für session.execute
mit Vektor entsprechen. Ich schaue durch das sqlalchemy Dokument, verstehe es aber nicht.
ausführen (Klausel, params = None, Mapper = None, bind = None, ** kw) ¶ http://docs.sqlalchemy.org/en/latest/orm/session_api.html
Haben Sie versucht, das zusätzliche Komma in Ihrer Auswahl? 'WHERE Stock LIKE% s ", (Stock,))' -> 'WHERE Aktie LIKE% s", (Stock)) ' –
ja, funktioniert nicht mit dem gleichen Fehler – vindex