2012-09-19 2 views
4

최근에야 파이썬을 사용하기 시작했습니다. 그러나 SqlAlchemy가 붙어 있습니다.SqlAlchemy : 테이블을 새 데이터베이스로 내보내기

MS SQL 데이터베이스를 읽고, 테이블을 쿼리하고 (모든 필드, 일부 필드의 필터 만) 스크립트를 작성하고 결과를 로컬 SQLite 데이터베이스에 씁니다.

(개체는 데이터 어댑터를 작성하는 것입니다 : 다른 데이터베이스에 결과를 내보내기 전에 SQLite는 데이터베이스에 대한 몇 가지 쿼리를 수행 할 대상 데이터베이스에서 임시 테이블에 쓰기도 가능합니다..) 난을 할 수

연결 및 쿼리 결과 얻기 - 파트를 인쇄 할 수 있으므로 인쇄 할 수 있습니다. 그러나 원본 SQL Server의 쿼리 결과 구조를 기반으로 새 테이블을 만들려면 어떻게해야합니까?

이 작동 :

import sqlalchemy 

esd = sqlalchemy.create_engine('mssql+pyodbc://username:passwordSservername/dbname') 
for row in esd.execute('select * from ticket_actions where log_dt > \'2012-09-01\''): 
    print(row.eFolderID) 

이것은 또한 작동합니다

import pyodbc 
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=servername;DATABASE=dbname;UID=username;PWD=password') 
cursor = cnxn.cursor() 
for row in cursor.execute('select * from ticket_actions where log_dt > \'2012-09-01\''): 
    print(row.eFolderID) 

쿼리가이 같은 구조로 새 테이블을 생성하는 방법에 어떤 아이디어가?

감사합니다.

답변

2

Creating and Dropping Database Tables를 참조하십시오

만들기 ... 개별 테이블 ...을 create()를 통해 Table의 방법을 수행 할 수 있습니다. 소스 구조를 읽기위한

, Reflecting Database Objects를 참조하십시오

Table 객체가 이미 데이터베이스 내에 존재하는 해당 데이터베이스 스키마 객체에서 자신에 대한 정보를로드하도록 지시 할 수 있습니다.
[...]
반사 시스템은보기를 반영 할 수도 있습니다.

+0

나는 테이블의 생성에 대해 알고 있지만, 반사 - 그건 제가 감사 찾던 비트! – Jerry

+0

해당 링크가 더 이상 작동하지 않습니다. 나는 이것이 새로운 것 같아요 : http://docs.sqlalchemy.org/en/latest/core/reflection.html, 인용하기 위해, "가장 간단한 경우에는 테이블 이름 만 지정하면됩니다. MetaData 객체 , 그리고 autoload = True 플래그. " –

1

시험이 :

def copy_table(src_session, src_class, dst_session, dst_class): 
    r=src_session.query(src_class).all() 
    for i in r: 
     j=dst_class() 
     [setattr(j, col.name, getattr(i, col.name)) for col in i.__table__.columns] 
     dst_session.add(j) 

se1=db1.Session() 
se2=db2.Session() 
copy_table(se1, db1.Book, se2, db2.Book) 
se2.commit() 
관련 문제