을 단순화, 나는 펄 스크립트에서 SQL 쿼리와 몇 가지 문제를 발견했습니다펄 모듈 몇 년 동안 SQL 쿼리
- 그들은
- 대부분의 개발자가 정말 잘되지 않습니다를 알아보기 힘들 것 SQL로. 나는 다음과 같은 SQL 쿼리를 생성 할 것이다, 나는 모든 빨간색 개를 찾으려면,
PET PET_TYPE COLOR ======== ========== ============ PET_ID PET_TYPE COLOR_ID Name Description Description Owner PET_TYPE COLOR_ID
을 그리고 :
의 나는 다음과 같은 테이블이 있다고 가정 해 봅시다.
FIND PET_ID, Name, Owner
FROM PET, PET_TYPE, COLOR
WHERE COLOR_ID.Description = 'RED'
AND PET_TYPE.Description = 'DOG'
AND PET.COLOR_ID = COLOR.COLOR_ID
AND PET.PET_TYPE = PET_TYPE.PET_TYPE
나는 쿼리 생성을 단순화 할 Perl 모듈을 원합니다. 데이터베이스 연결을 생성하고 테이블 연결 방법을 미리 정의 할 수있는 어떤 것. 일단 완료되면 모든 개발자는 단순화 된 쿼리 만 수행하면됩니다.
나는 이런 식으로 뭔가 같은 인터페이스를 상상:
#
# Create a new Database Connection
#
my $db = Some:Module->new(\%options);
#
# Now describe how these tables relate to each other.
# It should be possible to reuse this information for
# multiple queries. Maybe even make this a subroutine
# or company wide Perl module that will do this for
# the developer.
#
$db->link_tables (
PET => "COLOR_ID",
COLOR => "COLOR_ID
);
$db->link_tables (
PET => "PET_TYPE",
PET_TYPE => "PET_TYPE",
);
#
# Now that you've created a link to the database,
# and you've describe how the tables relate to
# each other, let's create a query. I'm not 100%
# sure of the interface, but it'll be something
# like this. There might be multiple `query`
# statements.
#
my $query = $db->query (
PET_TYPE => "Description = DOG",
COLOR => "Description = RED"
);
#
# Now, execute this query
#
$db->execute_query;
while (%row = $db->fetch) {
say "Dog's name is $row{Pet.Name}";
say "The owner is $row{Pet.Owner}";
}
#
# Let's find all cats named Wiskers.
# We've already described the links,
# so that doesn't have to be redone.
#
my $query = $db->query (
PET_TYPE => "Description = CAT",
PET => "Name = Wiskers"
);
내 설명이 불완전 알고 상관없이 완벽한 모듈이,이 얼마나 당신이 할 수있는 비상 탈출 해치 수 없습니다 원시 SQL 쿼리. 그러나, 아이디어는 다양한 분야 대신에 당신이 원하는 것 (나는 빨간 개 또는 고양이 수염을 원한다)에 프로그램을 집중시키는 것과 대부분의 지출을 어디에서 절을 표 사이에 연결하는 것에 관한 것입니다. 그러면 프로그램하기가 쉬우 며 프로그램을 더 쉽게 이해할 수 있습니다.
이와 같은 모듈이 없으면 하나를 생성합니다. 그러나,이 노력에 몇 주를 보내기 전에, 나는 어떤 일도 중복하지 않도록하고 싶다.
https://www.google.com/search?q=Perl+ORM을 방문해보십시오. 어떤 것이 당신의 상상을 포착하는지보십시오. – ruakh