2009-06-18 2 views
2

저는 대량 삽입을 할 수있는 것은 물론, 파이썬 클래스를 기반으로 한 코드를 만들 수있는 ORM을 찾고 있습니다. 나는 sqlobject를 시도했으나, 테이블을 생성하는 데는 문제가 없었지만, 삽입하고자하는 데이터의 양이 너무 느렸다. 그런 ORM이 존재하지 않는다면, 입력을 위생적으로 처리하고 SQL 문자열을 작성하는 것과 같은 것을 도와 줄 수있는 클래스에 대한 어떤 포인터라도 감사 할 것입니다.테이블 생성 및 대량 삽입을 허용하는 파이썬 ORM?

+0

"벌크"와 "ORM"은 일반적으로 함께 사용되지 않습니다. 당신이 대량으로 무엇을 의미 하는가에 달려 있지만, 대부분의 사람들은 ORM을 어렵게 만드는 대량을 생각할 때 원시 SQL을 생각합니다. 무슨 소리 야? 당신이하고 싶은 코드 샘플을 줄 수 있습니까? –

+0

SQLObject는 각 객체가 생성 될 때 데이터베이스에 삽입합니다. 한 번에 많은 오브젝트를 삽입하거나 적어도 다음 트랜잭션으로 가기 전에 각 삽입이 커밋되지 않도록 트랜잭션을 설정하고 싶습니다. – Jared

답변

5

SQLAlchemy을 시도해보십시오.

+1

우리는 SQLAlchemy를 사용하며 테이블 생성 및 대량 삽입에 잘 작동합니다. 데이터베이스 (및 DBAPI)에 따라 SQLQAlchemy에는 대량 삽입을위한 executemany()가 있습니다 (http://www.sqlalchemy.org/docs/05/sqlexpression.html#executing-multiplestatements 참조). – stephan

0

저는 sqlalchemy에 대량 삽입이 있다고 생각하지만, 사용하지 않았습니다. 그러나 이것은 this reviewer에 따라 벤치 마크 테스트에 유리하게 쌓여 있습니다.

EDIT : SQLAlchemy를 사용하는 방법이 실제 ORM이든 쿼리 코드이든 명확하지 않은 것 같습니다. 블로그 항목을 읽었을 때 ORM과 관련하여 논점이 있다고 생각했지만 몇 명의 의견 작성자는 쿼리 코드를 사용한다고 가정하고 ORM 인 경우 훨씬 느립니다.

0

저는 sqlobject에 익숙하지 않지만 일괄 삽입의 경우 일반적으로 트랜잭션에서이 작업을 수행하므로 각 조작에 대한 커밋이 필요하지 않습니다.

sqlobject에서 트랜잭션 개체를 사용하여 커밋을 제어 할 수있는 것처럼 보입니다. 이 기능을 제대로 사용하려면 기본 AutoCommit 플래그도 전환해야합니다.

http://www.sqlobject.org/SQLObject.html#id45

관련 문제