[Dbix-class] how to add a method that performs a database lookup?
Adam Witney
awitney at sgul.ac.uk
Wed Dec 17 10:12:25 GMT 2008
On 17 Dec 2008, at 04:15, Toby Corkindale wrote:
> Adam Witney wrote:
> [snip]
>>>> The second place i might need this is that i have some data in a
>>>> second database and so i would have to interact with this using
>>>> dblink (I am using PostgreSQL). This seems easier to just write
>>>> the query in a method?
>>>
>>> Doesn't Pg just represent the foreign DBI-Linked database as
>>> another schema? So I think you could just write the extra classes
>>> into dbic and it should query them, without realising their foreign?
>>> .. I haven't tried it myself though.
>> The problem is that with dblink non-superusers have to provide a
>> username/password in the dblink query, can you pass these kind of
>> parameters into the class/object?
>> eg
>> SELECT * from dblink('dbname= mydb username=user password=mypass',
>> 'SELECT id FROM mytable') AS t1(id int);
>> I can wrap this in a function, but can i build a class on top of a
>> table function with DBIx::Class?
>
> Hang on.. Don't you put the username/password in the foreign-schema
> defn when you set it all up, eg:
> SELECT make_accessor_functions(
> 'dbi:Pg:dbname=mydb',
> 'user',
> 'mypass',
> etc..
> );
>
> And then access it via plain SQL:
> SELECT id,foo,bar FROM remote_db.remote_table;
>
> As I understand it, it works via PL/Perlu, so you need to be
> superuser to create the functions and setup, but after that anyone
> could run them?
>
> Or are we talking about two different Pg utilities? :)
I was referring to dblink which works like this:
SELECT * FROM dblink('dbname=test1', 'SELECT id, name FROM my_table')
AS t1(id int, name text);
http://www.postgresql.org/docs/current/static/dblink.html
I have not looked at DBI-link before... i will have a look and see how
it works
thanks
adam
More information about the DBIx-Class
mailing list