Необработанный SQL_Flask SQLAlchemy: использовать параметры списка IN Bind - PullRequest
0 голосов
/ 09 марта 2019

Как я могу передать список внутри ": песни"?

Необработанный SQL будет работать, если я передам пару ключ: значение, но не при попытке передать список. Я получаю AttributeError: у объекта списка нет атрибута 'keys.'

    songs = ('Song1', 'Song2', 'Song3', 'Song4', 'Song5')
    engine = app.db.engine
    connection = engine.connect()
    rawSqlResult = text(
    "SELECT * FROM AlbumView WHERE Song IN :songs")
    queryResult = connection.execute(rawSqlResult, songs)

    tempDict, resultList = {}, []
    for rowproxy in queryResult:
        for tup in rowproxy.items():
            tempDict = {**tempDict, **{tup[0]: tup[1]}}
        resultList.append(tempDict)
        print(resultList)

1 Ответ

0 голосов
/ 11 марта 2019

Этот подход решил мою проблему:

my_list = ['peach', 'grape', 'apple']
query_parameters = {}
counter = 1
for list_item in my_list:
    query_parameters["list_item" + str(counter)] = list_item
    counter += 1

where_clause = 'fruits IN(:' + ",:".join(query_parameters.keys()) + ')' # create clause to be inserted into query
query_text = db.text("""
    SELECT fruits
    FROM table
    WHERE """ + where_clause + """ """)

result = db.engine.execute(query_text, **query_parameters)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...