2017-11-15 9 views
-1

장고 Django 편리 manage.pydumpdatawhich can be configured to dump an entire database as JSON 명령이 있습니다. 입력 'mysql+pymysql://user:[email protected]:3306/'같은 연결 문자열JSON (I로 데이터베이스의 내용을 얻을로sqlalchemy로 전체 데이터베이스 읽기 및 JSON

테이크 : 현재

나는 sqlalchemy을 사용하고 내가 같은 일을하고 싶습니다에 한정하고 장고가 제공하는 모든 메타 정보를 요구하지는 않지만, 나는 신경 쓰지 않을 것이다.) 데이터베이스의 모든 테이블 이름을 얻는 방법을 요약 JSON에 SQLAlchemy의 개체를 덤프하는 방법을 정교화

I found this questionthis from the sqlalchemy documentation :

meta = MetaData() 
input_db = f'sqlite:///tmpsqlite' 
engine = create_engine(input_db) 
meta.reflect(bind=engine) 
print(meta.tables) 

어떻게이 테이블의 모든 콘텐츠를 검색 할 다음 JSON로 변환 ? django의 dumpdata 기능과 비슷한 sqlalchemy에 내장 명령이 있습니까?

답변

0

후손 여기 내 솔루션을 내릴 때 :`우편 (...)이`중복이라고

import json 

def dump_sqlalchemy(output_connection_string,output_schema): 
    """ Returns the entire content of a database as lists of dicts""" 
    engine = create_engine(f'{output_connection_string}{output_schema}') 
    meta = MetaData() 
    meta.reflect(bind=engine) # http://docs.sqlalchemy.org/en/rel_0_9/core/reflection.html 
    result = {} 
    for table in meta.sorted_tables: 
     result[table.name] = [dict(row) for row in engine.execute(table.select())] 
    return json.dumps(result) 
+1

참고. ['RowProxy'] (http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.RowProxy)는 그 자체로 매핑이며'dict ()'생성자 :'dict (row)'. –

+0

'dict()'에 행 프록시 객체를 전달하면 어떤 결과를 얻을 수 있습니다. –