Próbuję wykonać to zapytanie w sqlalchemy
SELECT id, name FROM user WHERE id IN (123, 456)
Chciałbym powiązać listę [123, 456]
w czasie wykonywania.
python
sqlalchemy
wonzbak
źródło
źródło
Zakładając, że używasz stylu deklaratywnego (tj. Klas ORM), jest to dość łatwe:
db_session
jest tutaj twoja sesja bazy danych, podczasUser
gdy klasa ORM jest__tablename__
równa"users"
.źródło
~
(~User.id.in_([123,456])
) lubnot_
fromsqlalchemy.sql.expression
(not_(User.id.in_([123,456]))
).Alternatywnym sposobem jest użycie surowego trybu SQL z SQLAlchemy, używam SQLAlchemy 0.9.8, python 2.7, MySQL 5.X i MySQL-Python jako łącznika, w tym przypadku potrzebna jest krotka. Mój kod wymieniony poniżej:
Mam nadzieję, że wszystko działa dla Ciebie.
źródło
Dzięki API wyrażenia, które na podstawie komentarzy jest tym, o co pyta to pytanie, możesz użyć
in_
metody odpowiedniej kolumny.Zapytać
posługiwać się
Zakłada się to
user_table
iconn
odpowiednio zdefiniowano.źródło
Chciałem tylko udostępnić moje rozwiązanie za pomocą sqlalchemy i pand w Pythonie 3. Być może przydałoby się to.
źródło
Tylko dodatek do powyższych odpowiedzi.
Jeśli chcesz wykonać SQL z instrukcją „IN”, możesz to zrobić:
Dwa punkty:
EDYCJA Uważaj, jeśli długość listy wynosi jeden lub zero, spowoduje to błąd!
źródło
args = [(tuple(ids_list),)]
, proszę dokładnie sprawdzić.(item, )
i jest niepoprawne w SQL