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
'Programing' 카테고리의 다른 글
JSONarray를 ArrayList로 변환 (0) | 2020.09.09 |
---|---|
클라이언트 측에서 양식이 여러 번 제출되는 것을 방지하는 방법은 무엇입니까? (0) | 2020.09.09 |
TFS 소스 제어에서 특정 파일을 제외하는 방법 (0) | 2020.09.09 |
nullable int와 함께 int.TryParse를 사용하는 방법? (0) | 2020.09.09 |
C #을 사용하여 파일 확장명 변경 (0) | 2020.09.09 |