SQLAlchemy를 사용하여 PostgreSQL 데이터베이스에서보기를 만들려고합니다. sqlalchemy-views에서 CreateView 컴파일러를 사용하고 있습니다. 나는 참고로이 질문에 대한 답변을 사용하고 있습니다 :보기를 만들 때 KeyError
How to create an SQL View with SQLAlchemy?
뷰를 생성하는 내 코드는 다음과 같습니다
그러나def create_view(self, myparameter):
mytable = Table('mytable', metadata, autoload=True)
myview = Table('myview', metadata)
engine.execute(CreateView(myview, mytable.select().where(mytable.c.mycolumn==myparameter)))
, 나는이 쿼리를 실행하려고는 다음과 같은 예외가 발생 :
KeyError: 'mycolumn_1'
컴파일 된 쿼리를 보면, 내 매개 변수 값에 대한 자리가 교체되지 않는 것 같습니다 :
'\nCREATE VIEW myview AS SELECT mytable.mycolumn \nFROM mytable \nWHERE mytable.mycolumn = %(mycolumn_1)s\n\n'
자리 표시자가 대체되지 않으므로 쿼리가 실패합니다. 그러나 내 코드가 예제와 많이 다르지 않기 때문에 대체가 발생하지 않는 이유는 알 수 없습니다.
첫 번째 의심은 아마도 매개 변수의 유형과 열이 호환되지 않는 것일 수 있습니다. 현재 매개 변수는 데이터베이스의 텍스트 열에 매핑되어야하는 유니 코드 문자열로 제공됩니다. 또한 동일한 (실패한) 결과 bigint 열 긴 매개 변수 매핑 시도했다.
다른 제안이 있으십니까?
먼저 전체 추적을 포함하십시오. KeyError는 어떤 이유로 매개 변수가 올바르게 전달되지 않아서 자리 표시자를 대체하려고 할 때 실패 함을 나타냅니다. 둘째로, 코드를 그대로 붙여 넣지 말고 다른 사람들도 잘 작업 할 수있는 [mcve]를 만드십시오. –