Реализуйте заполнители в необработанных SQL запросах в SQLAlchemy - PullRequest
0 голосов
/ 14 апреля 2020

Как реализовать заполнители в необработанных SQL запросах в SQLAlchemy?

try:
    username: 'Pat'
    email: 'pat@gmail'
    password: 'pat'
    engine.execute("INSERT INTO users (username, email, password) VALUES (:username, :email, :password)", 
    {"username": username, "email": email, "password": password})
    session = db_session()
    session.commit()
    print('Inserted into db')
except:
    print('not inserted')

1 Ответ

2 голосов
/ 14 апреля 2020

Заполнители задаются в качестве аргументов для execute:

.execute("INSERT INTO ...", username=username, email=email, password=password)

.. или, если вы хотите расширить свой словарь в аргументы, вы можете использовать **arguments, где arguments = {"username": username, "email": email, "password": password}.

Рекомендуется также обернуть запрос в вызов text():

from sqlalchemy.sql import text

....
engine.execute(text("SELECT ...."), username=username, email=email, password=password

..., поскольку это позволяет выполнять синтаксический анализ операторов независимо от движка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...