다음 솔루션은 SQLAlchemy Expression Language를 사용하고 SQLAlchemy 1.1에서 작동합니다. 이 솔루션은 원래 작성자가 요청한대로 매개 변수를 쿼리와 혼합하지 않지만 SQLAlchemy 모델을 사용하여 다른 SQL 언어에 대한 SQL 쿼리 문자열 및 매개 변수 사전을 생성하는 방법을 제공합니다. 예제는 튜토리얼 http://docs.sqlalchemy.org/en/rel_1_0/core/tutorial.html을 기반으로합니다.
수업이 주어지면
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class foo(Base):
__tablename__ = 'foo'
id = Column(Integer(), primary_key=True)
name = Column(String(80), unique=True)
value = Column(Integer())
select 함수를 사용하여 쿼리 문을 생성 할 수 있습니다 .
from sqlalchemy.sql import select
statement = select([foo.name, foo.value]).where(foo.value > 0)
다음으로 명령문을 쿼리 객체로 컴파일 할 수 있습니다.
query = statement.compile()
기본적으로이 명령문은 SQLite 및 Oracle과 같은 SQL 데이터베이스와 호환되는 기본 '명명 된'구현을 사용하여 컴파일됩니다. PostgreSQL과 같은 방언을 지정해야하는 경우 다음을 수행 할 수 있습니다.
from sqlalchemy.dialects import postgresql
query = statement.compile(dialect=postgresql.dialect())
또는 SQLite로 방언을 명시 적으로 지정하려면 paramstyle을 'qmark'에서 'named'로 변경할 수 있습니다.
from sqlalchemy.dialects import sqlite
query = statement.compile(dialect=sqlite.dialect(paramstyle="named"))
쿼리 객체에서 쿼리 문자열과 쿼리 매개 변수를 추출 할 수 있습니다.
query_str = str(query)
query_params = query.params
마지막으로 쿼리를 실행합니다.
conn.execute( query_str, query_params )