2010-05-12 3 views
1

저는 sqlite3을 사용하여 파이썬 (현재 2.5 및 2.6을 대상으로 함)의 소규모 데이터베이스 응용 프로그램을 작성 중입니다.파이썬 응용 프로그램 외부에 데이터베이스 스키마를 저장하는 표준 방법이 있습니까

데이터베이스를 설정하고 현재 스키마와 일치하는지 확인하는 일련의 기능을 제공하는 것이 도움이됩니다. 휠을 재발견하기 전에 비슷한 것을 제공 할 도서관을 둘러 보았습니다. RoR의 마이그레이션과 비슷한 것을 갖고 싶습니다. xml2ddl은 라이브러리로 간주되지 않지만 (그런 식으로 사용될 수도 있음) 더 중요한 것은 sqlite3을 지원하지 않습니다. 언젠가는 xml2ddl에 대한 관심이 부족하기 때문에 어느 날 Python 3으로 이동할 필요성에 대해 걱정하고 있습니다.

사람들이이 문제를 해결하기 위해 사용하는 다른 도구가 있습니까?

답변

1

나는 this을 사용하여 스키마를 동기화 상태로 유지합니다.

메타 데이터 테이블을 추가하여 버전을 추적합니다.

3

이 방법을 sqlite3를 테이블의 스키마를 찾을 수 있습니다

import sqlite3 
db = sqlite3.connect(':memory:') 
c = db.cursor() 
c.execute('create table foo (bar integer, baz timestamp)') 
c.execute("select sql from sqlite_master where type = 'table' and name = 'foo'") 
r=c.fetchone() 
print(r) 
# (u'CREATE TABLE foo (bar integer, baz timestamp)',) 
+0

이것은 기존의 것과 비교할 수있는 문제 중 하나를 해결하지만 데이터베이스 스키마를 프로그램 자체에서 보호 할 수는 없습니다. – acrosman

+0

@acrosman : 자세히 설명해 주시겠습니까? 나는 "데이터베이스 스키마를 프로그램 밖으로 유지"한다는 것을 이해하지 못합니다. – unutbu

+0

나는 "table foo (bar integer, baz timestamp)"코드를 작성하는 것과 같은 문장을 유지하고 싶다. 차라리 동적으로 생성 된 SQL로 구문 분석되는 다른 파일 (XML 또는 유사)을 갖고 싶습니다. – acrosman

0

South는 RoR에 마이그레이션에 내가 알고있는 가장 가까운 것입니다. 그러나 이러한 마이그레이션에 Rails가 필요한 것처럼 남쪽을 사용하려면 django이 필요합니다.

2

SQLAlchemy migrate을 살펴보십시오. 마이 그 레이션 도구로 만 사용하는 것은 문제가 없지만 구성을 현재 데이터베이스 상태와 비교하는 것은 아직 실험적입니다.

관련 문제