2008-09-16 3 views
4

현재 나의 공연에서는 Java를 통해 iBATIS를 사용하여 데이터베이스를 CRUD합니다. 필자는이 도구의 추상 특성을 좋아합니다. 특히 레거시 데이터베이스로 작업 할 때는 고유 한 구문을 사용하지 않기 때문에 좋습니다.iBATIS for Python?

웹 사이트에만 Java/.NET/Ruby 버전 만 있기 때문에이 라이브러리에 Python 아날로그를 찾고 있습니다. 내가 필요하지 않으면 자이 썬으로 전환하고 싶지 않다.

Python을 위해 iBATIS 기능과 비슷한 다른 프로젝트가 있습니까?

답변

10

iBatis는 XML 파일에서 SQL DML (또는 SQL의 정의)을 분리합니다. 특히 SQL과 다른 곳에서 정의 된 일부 객체 모델 간의 매핑에 중점을 둡니다.

SQL Alchemy는이를 수행 할 수 있습니다. 그러나 실제로는 아주 완벽한 솔루션은 아닙니다. iBatis와 마찬가지로 SQL 테이블 정의 및 테이블과 Python 클래스 정의 간의 매핑 만 할 수 있습니다.

SQL 데이터베이스 정의 인 클래스 정의가 있어야합니다. 클래스 정의가 쿼리 및 처리 DML뿐만 아니라 SQL Table DDL을 생성하는 경우 훨씬 더 완벽합니다.

SQLAlchemy와 Django ORM 사이를 플립 플롭합니다. SQLAlchemy는 iBatis와 같은 방식으로 사용할 수 있습니다. 하지만 나는 객체 디자인을 중심으로 만들고 SQL 구현을 툴셋에 의해 객체에서 파생시키는 것을 선호한다.

대규모 일괄 처리 독립 실행 형 프로젝트에 SQLAlchemy를 사용합니다. DB로드, 스키마 변환, DW 리포팅 등은 잘 작동합니다. 이 프로젝트에서 초점은 객체 모델이 아닌 데이터의 관계형 뷰에 있습니다. 생성 된 SQL은 PL/SQL 저장 프로 시저로 옮겨 질 수 있습니다.

웹 응용 프로그램에 내장 된 ORM 기능을 활용하여 장고를 사용합니다. 약간의 작업으로 Django ORM을 나머지 Django 환경과 분리 할 수 ​​있습니다. provide global settings을 사용하면 별도의 설정 모듈을 사용하지 않고도 앱을 특정 데이터베이스에 바인딩 할 수 있습니다.

장고에는 SQL 구현을 관리 할 수있는 여러 가지 일반적인 관계 (외래 키, 다 대다, 일대일)가 포함되어 있습니다. 첨부 된 데이터베이스에 대한 키 및 색인 정의를 생성합니다.

데이터베이스가 지속성을 위해 사용되면서 객체 지향적 인 문제가 발생하면 Django의 거의 투명한 ORM 계층에 이점이 있습니다.

SQL 처리를 중심으로하는 문제가 대부분 관계형 인 경우 SQLAlchemy에서 생성 된 SQL을 보는 기능에 이점이 있습니다.

1

아마도 SQLAlchemy SQL Expression 지원이 적합 할 것입니다. documentation을 참조하십시오.