Schrift
[thread]8884[/thread]

DBIx::Class

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
bloonix
 2007-03-28 03:23
#75471 #75471
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Community,

vor kurzem bin ich auf den Geschmack von CPAN:DBIx::Class gekommen und habe
auch sogleich eine Frage auf dem Herzen.

Ich versuche gerade jede Zeile als Hashref in ein Array zu pushen,
was man unter DBI wie folgt kennt:

Code: (dl )
1
2
3
while (my $row = $sth->fetchrow_hashref()) {
  push @rows, $row;
}


Nun versuche ich das Ganze mit DBIC zu lösen, aber leider liefert
get_columns() keine Hashreferenz zurück, was ich unschön finde,
da die gesamte Zeile in einen neuen Hash kopiert wird:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my @rs = $dbix->resultset('TestDB_1')->all;

foreach my $row (@rs) {

   # so ist es üblich, aber die gesamte Zeile wird
   # kopiert, was ich nicht so toll finde
   push @rows1, { $row->get_columns };

   # so funktioniert es zwar, ist aber unsinnig,
   # da direkt auf das Objekt zugegriffen wird
   push @rows2, $row->{_column_data};

   # so haette ich es am liebsten... das immer eine
   # Referenz zurueck gegeben wird, aber das klappt
   # natürlich nicht, da get_columns %HASH zurück liefert
   push @rows3, $row->get_columns;
}


Gibt es vielleicht noch eine andere Möglichkeit?

Gruss,
opi\n\n

<!--EDIT|opi|1175104829-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
pq
 2007-03-28 11:55
#75472 #75472
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich glaube, du hast den sinn von DBIC nicht ganz verstanden. $row ist hier schon
ein objekt, mit dem du arbeiten kannst.
zudem willst du einerseits daten kopieren, aber dich stört, dass sie
kopiert werden. das widerspricht sich. sag doch einfach mal, was
genau du erreichen willst.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bloonix
 2007-03-28 13:13
#75473 #75473
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pq,28.03.2007, 09:55]ich glaube, du hast den sinn von DBIC nicht ganz verstanden. $row ist hier schon
ein objekt, mit dem du arbeiten kannst.
zudem willst du einerseits daten kopieren, aber dich stört, dass sie
kopiert werden. das widerspricht sich. sag doch einfach mal, was
genau du erreichen willst.[/quote]
Dir auch einen schönen Morgen pq. Es schaut eher so aus, als hättest du
meine Frage nicht verstanden - oder eher wolltest sie nicht verstehen...
aber das ist man ja von dir gewöhnt ;)

Ich möchte eine Hashref zurückgeliefert bekommen. Dies ist aber aus
diversen Gründen nicht möglich, was mir schon jemand anderes um
einiges netter erklärt hat.

Danke,
opi\n\n

<!--EDIT|opi|1175073317-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
pq
 2007-03-28 13:21
#75474 #75474
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=opi,28.03.2007, 11:13]Dir auch einen schönen Morgen pq. Es schaut eher so aus, als hättest du
meine Frage nicht verstanden - oder eher wolltest sie nicht verstehen...
aber das ist man ja von dir gewöhnt ;)[/quote]
was hab ich denn jetzt schon wieder falsches gesagt? wenn du DBIC verwendest, wozu brauchst
du dann noch eine hashref? ich hab doch nur gefragt, was der sinn ist.

Quote
Ich möchte eine Hashref zurückgeliefert bekommen. Dies ist aber aus
diversen Gründen nicht möglich, was mir schon jemand anderes um
einiges netter erklärt hat.

vielleicht solltest du einfach dazusagen, dass man vorher seine samthandschuhe
anziehen soll, bevor man dir antwortet. meine güte.
meine frage war, *warum* du diese hashref brauchst.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bloonix
 2007-03-28 13:49
#75475 #75475
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Nun, ich brauche die Hashref, weil ich die Daten für einen Loop in einem
"HTML::Template" bauen wollte. TMPL_LOOP's funktionieren leider nur so.

Angenommen, dass ich 2 MB (Beispiel) Daten aus einer Datenbank
selektiere... wenn ich dann jede Zeile in ein Array pushe, dann möchte ich
nicht, dass für jede Zeile ein neuer Hash erstellt wird, sondern die Hashref
in das Array pushen.

Die Antwort auf diese Frage war (woanders):

Quote
... HTML::Template is shit and broken ... seriously ... HTML::Template frankly is not usable in production ... for exactly the sort of reason you just demonstrated


Dafür habe ich sogar Verständnis, da ich mich schon öfters wegen dieses
Umstandes geärgert habe. Mein nächstes Problem ist auch, dass ich
ebenfalls für GD::Graph::Lines Arrays bauen muss. Natürlich wären mir
auch hier eher Arrayrefs lieber. :/

Wie ich das Ganze nun aufbauen werde... keine Ahnung. Darüber muss ich
mir noch Gedanken machen.\n\n

<!--EDIT|opi|1175075449-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2007-03-28 14:01
#75476 #75476
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was spricht denn gegen die erste Variante? Nur die Tatsache, dass es kopiert wird?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2007-03-28 14:35
#75477 #75477
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Renee,

sonst spricht nichts dagegen, ausser vielleicht, dass das Übergeben von
Rerefenzen schneller ist, als ganze Strukturen zu kopieren. Ist dieser
Gedanke denn so abwegig? Ich habs so gelernt, dass man doch
Referenzen übergibt anstatt Arrays oder Hashes zu kopieren. :(

Mir gefällt DBIC sehr. Ich mache mir vielleicht zuviele Gedanken darüber...

2 MB Daten selektieren + 2 MB AoH bauen + 2 MB Template... sind dann
schon 6 MB.

Gruss,
opi

Edit:

Allerdings habe ich auch verstanden, warum an dieser Stelle keine
Referenz übergeben wird... denn wenn man Daten darin ändert, dann
ändert man sie ja nicht im eigenen Hash, sondern im Objekt... die weiter-
verwendung des Objekts ist dann nicht mehr möglich, weil die Daten
manipuliert sind.\n\n

<!--EDIT|opi|1175078439-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2007-03-28 14:42
#75478 #75478
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Bezüglich des Bauens von AoHs für HTML::Template werde ich mich dann
einfach nach einem anderen Template-System umschauen... vielleicht
gibt es noch bessere Möglichkeiten. :)
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2007-03-28 14:46
#75479 #75479
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann kannst Du Dir ja CPAN:HTML::Template::Compiled anschauen. Da kannst Du auf Methoden von Objekten zugreifen (vom Template aus).
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2007-03-28 15:21
#75480 #75480
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=opi,28.03.2007, 11:49]Nun, ich brauche die Hashref, weil ich die Daten für einen Loop in einem
"HTML::Template" bauen wollte. TMPL_LOOP's funktionieren leider nur so.[/quote]
dann benutz HTML::Template::Compiled, das kann ja auch mit
objekten umgehen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-03-28 03:23.