문제

~이다 CPAN DBI 일반적인 데이터베이스 사용을 위해 Perl에서 사용할 수 있는 최고의 데이터베이스 인터페이스는 무엇입니까?더 나은 옵션이 있습니까?

도움이 되었습니까?

해결책

낮은 수준의 데이터베이스 액세스만을 찾고 있다면 SQL 문자열(선택적으로 자리 표시자 및 바인드 값 포함)을 제공하고 쿼리를 실행하여 결과를 반환합니다. 그렇습니다. DBI 지금까지 최선의 방법입니다.

더 높은 수준의 인터페이스(즉, 코드에서 원시 SQL을 거의 또는 전혀 사용하지 않는 인터페이스)를 원한다면 여러 ORM(객체 관계형 매퍼) Perl에서 사용할 수 있습니다.확인해 보세요 ORM 자세한 내용과 링크는 Perl Foundation의 Perl 5 wiki 페이지를 참조하세요.(이 중에서 선택하는 데 도움이 필요하거나 특정 질문이 있는 경우 이 질문의 초점을 좁히거나 다른 질문을 게시할 수 있습니다.)

다른 팁

DBI는 Perl과 DBMS 간의 "낮은 수준" 인터페이스입니다.그렇게 하기 위한 유일한 현실적인 선택입니다.Java의 JDBC와 유사합니다.Perl과 데이터베이스 사이의 저수준 인터페이스를 위해 DBI 이외의 다른 것을 선택하는 것은 미친 짓입니다(또는 매우 구체적인 사용 사례가 있습니다).

DBI 외에도 데이터베이스 작업을 훨씬 쉽고 깔끔하게 만들어주는 다양한 개체/관계형 매퍼가 있습니다.

일반적이고 더 인기 있는 것 중 일부는 다음과 같습니다.

일반 사용을 선택한 경우 DBI ORM이 필요하지 않은 작업을 위해서는 강력히 살펴 보는 것이 좋습니다. DBIx::단순.

대체품은 아니지만 매우 잘 설계된 API입니다. DBI그것은 단순하고 단순하고 복잡한 것을 가능하게합니다. DBI.

당신은 분명히 간단한 것들을 검색해야 한다는 것을 발견한 적이 있습니까? DBI쿼리 결과를 해시 (열 및 그 값)의 Arrayref (행)로 얻는 것과 같은 문서화?와 함께 DBIx::Simple 이것은 간단합니다:

# DBI
my $rows = $dbh->selectall_arrayref($sql, { Slice => {} });
                 # tell it we want "hashes" (yuck!) ^^^^

# DBIx::Simple
my $rows = $db->query($sql)->hashes; # does the same as the above code underneath!

다음을 살펴보세요. 이상.또한, SQL::요약 간단한 쿼리를 손쉽게 수행할 수 있습니다.내가 사용했던 모든 코드에서 사용됩니다. DBI 전에는 되돌아보고 있지 않습니다.

대부분의 "상위 수준" 인터페이스(예: SQL::Abstract) 및 (DBIx::Simple)는 실제로 쿼리를 수행할 때 DBI 자체를 사용한다는 점을 지적할 가치가 있습니다.DBI는 Perl의 데이터베이스 연결에 대해 거의 승인된 표준 방법입니다.

(내성적으로!) 객체로 작업하려면 Moose 기반 ORM을 구현하는 Fey::ORM을 살펴보세요.또한 매우 SQL과 유사한 구문을 가지고 있으므로 다른 ORM 프레임워크보다 내 RDBMS 기반 두뇌에 조금 더 적합합니다.

보세요 클래스::DBI 또한.

내 생각에는 DBI가 정말 좋은 선택인 것 같다.저는 DBD::mysql을 적극적으로 사용해왔고 이것이 정말 좋은 솔루션이라는 것을 알았습니다.

우리는 모든 프로젝트에서도 DBI 모듈을 사용합니다.여러 번 우리는 특정 애플리케이션을 위해 그 위에 사용자 정의 패키지를 구축하지만 그 아래에는 핵심 DBI 모듈이 있습니다.그리고 종종 DBI 모듈 기능을 직접 사용하는 것이 더 쉽습니다.

DBI는 훌륭하지만 DBD 모듈의 품질은 다양할 수 있습니다.나는 DBD:pg 버전 중 하나의 '기능'에 물렸습니다.커서로 상호작용하는 대신 결과의 전체 데이터를 메모리에 로드하는 것을 좋아했습니다.

평소대로 - Caveat 프로그래머.

DBI가 흔들린다!그러나 빠르고 모든 기능을 갖춘 적절한 ORM을 위해서는 항상 DBIx::Class를 사용하세요.

기본적으로 먼저 DBI만 사용하는 데 익숙해져야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top