Programing

pandas DataFrame으로 SQLAlchemy ORM 변환

crosscheck 2020. 9. 9. 07:31
반응형

pandas DataFrame으로 SQLAlchemy ORM 변환


이 주제는 여기 또는 다른 곳에서 한동안 다루지 않았습니다. SQLAlchemy <Query object>를 pandas DataFrame으로 변환하는 솔루션이 있습니까?

Pandas에는 사용할 수있는 기능 pandas.read_sql이 있지만 원시 SQL을 사용해야합니다. 나는 그것을 피하고 싶은 두 가지 이유가 있습니다 : 1) 이미 ORM을 사용하는 모든 것을 가지고 있습니다 (그 자체로 좋은 이유) 그리고 2) 쿼리의 일부로 파이썬 목록을 사용하고 있습니다 (예 : 내 모델 클래스는 .db.session.query(Item).filter(Item.symbol.in_(add_symbols)어디에 있습니까? Item) 그리고 add_symbols목록입니다). 이것은 SQL과 동일 SELECT ... from ... WHERE ... IN합니다.

가능한 것이 있습니까?


다음은 대부분의 경우 작동합니다.

df = pd.read_sql(query.statement, query.session.bind)

pandas.read_sql매개 변수에 대한 자세한 정보는 문서를 참조하십시오 .


초보 팬더 프로그래머에게 더 명확하게 설명하기 위해 다음은 구체적인 예입니다.

pd.read_sql(session.query(Complaint).filter(Complaint.id == 2).statement,session.bind) 

여기에서 id = 2 인 불만 사항 테이블 (sqlalchemy 모델은 불만 사항)에서 불만 사항을 선택합니다.


계속 오류가 발생하여 선택한 솔루션이 작동하지 않았습니다.

AttributeError : 'AnnotatedSelect'개체에 'lower'속성이 없습니다.

다음이 효과가 있음을 알았습니다.

df = pd.read_sql_query(query.statement, engine)

매개 변수와 방언 특정 인수로 쿼리를 컴파일하려면 다음과 같이 사용하십시오.

c = query.statement.compile(query.session.bind)
df = pandas.read_sql(c.string, query.session.bind, params=c.params)

참고 URL : https://stackoverflow.com/questions/29525808/sqlalchemy-orm-conversion-to-pandas-dataframe

반응형