0
How do I get a raw, compiled SQL query from a SQLAlchemy expression?에서 다음 코드를 얻었습니다. 파이썬 2.7에서 파이썬 3.4로 옮길 때까지 잘 작동했습니다. 코멘트에 '바이트'와 '딕셔너리'파이썬 2.7 ~ 파이썬 3.4 % : 'bytes'와 'dict'에 대해 지원되지 않는 피연산자 유형
def compile_query(query):
dialect = query.session.bind.dialect
statement = query.statement
comp = compiler.SQLCompiler(dialect, statement)
comp.compile()
enc = dialect.encoding
params = {}
for k,v in comp.params.iteritems():
if isinstance(v, unicode):
v = v.encode(enc)
params[k] = sqlescape(v)
return (comp.string.encode(enc) % params).decode(enc)
파이썬 2에서는 문자열이 ASCII이지만 파이썬 3에서는 유니 코드이다. 따라서 대부분의 경우 수동으로 encode() 및 decode()를 수행 할 필요가 없습니다. 파이썬 3 유니 코드 지원에 대한 자세한 정보는 https://docs.python.org/3/howto/unicode.html – dylrei
@dylrei입니다. – darwindave