Forum: Rails Germany daten aus der datenbank holen

8ecd2cd5666063da5ea09e8e39bb7bcc?d=identicon&s=25 Hello Guy (jobber)
on 2009-02-23 12:31
Hallo,

ich habe eine klasse Patient. Ich möchte Daten der Patienten aus der
Datenbank
holen.
Ich stelle mir das so vor: Patient(mueller) => ausgewählte Daten (nicht
alle) wie Name, Geburtsdatum und Adresse werden geholt.

Wie kann ich diese Situation in Ruby realisieren?

lg
858485a2cf8b17a24a68c1e224ff77bd?d=identicon&s=25 Benjamin Behr (Guest)
on 2009-02-23 12:46
(Received via mailing list)
patient = Patient.find_by_name('mueller')

wenn du das Feld "name" in deiner Tabelle "patients" hast.

Danach kannst du durch entsprechende Methodenaufrufe auf die einzelnen
Daten zugreifen:

patient.name # =>
Müllerpatient.geburtsdatum # => 23.02.2009

usw.

schöne grüße,benjamin

Am 23.02.2009 um 12:31 schrieb Hello Guy:
A6ebaaa00666e4f1934d9ca2c024aaf3?d=identicon&s=25 Rene Paulokat (Guest)
on 2009-02-23 13:01
(Received via mailing list)
On Mon, 23 Feb 2009 12:31:15 +0100
Hello Guy <lists@ruby-forum.com> wrote:

> Hallo,

hi,

> ich habe eine klasse Patient. Ich möchte Daten der Patienten aus der
> Datenbank
> holen.
> Ich stelle mir das so vor: Patient(mueller) => ausgewählte Daten (nicht
> alle) wie Name, Geburtsdatum und Adresse werden geholt.
>
> Wie kann ich diese Situation in Ruby realisieren?

also mit ActiveRecord etwa so:

class Patient < ActiveRecord::Base
   composed_of :address_data, :mapping => [ %w(lastname lastname),
         %w(geburtsdatum geburtsdatum),
         %w(strasse strasse),
         %w(stadt stadt)]
end


data = Person.find(:first).address_data
data.strasse

das schafft dir ein 'subset' an daten der Patient-class
natuerlich muessen diese attribute auch in der Patient-class vorhanden
sein.

sieh dir das an:
http://api.rubyonrails.org/classes/ActiveRecord/Ag...

gruesse
rene
8ecd2cd5666063da5ea09e8e39bb7bcc?d=identicon&s=25 Hello Guy (jobber)
on 2009-02-23 20:01
danke für eure antworten, aber ich hab mich falsch ausgedrückt.

also die klasse patient befindet sich nicht in der anwendung selber
sondern
ist ein separates programm patient.rb welches zugriff auf die datenbank
haben
soll.

kann ich aus diesem programm patient.rb genauso auf die bestehende
datenbank
zugreifen?

lg
Cd6b438f1238ee36cf4daecbae1d3917?d=identicon&s=25 Thomas Preymesser (Guest)
on 2009-02-23 20:11
(Received via mailing list)
2009/2/23 Hello Guy <lists@ruby-forum.com>:
> danke für eure antworten, aber ich hab mich falsch ausgedrückt.
>
> also die klasse patient befindet sich nicht in der anwendung selber
> sondern
> ist ein separates programm patient.rb welches zugriff auf die datenbank
> haben
> soll.
>
> kann ich aus diesem programm patient.rb genauso auf die bestehende
> datenbank
> zugreifen?

Ja, klar. Hast du das Buch 'Ruby Cookbook'? Dort ist ein Beispiel, wie
man ActiveRecord auch ohne Rails verwenden kann.

Prinzipiell:

Klasse Patient definieren

zu Datenbank verbinden
Schleife über alle einzulesenden Daten
  Alle Attribute in Patient belegen
  save aufrufen
bei Datenbank abmelden


-Thomas


--
Thomas Preymesser
thopre@gmail.com
http://thopre.googlepages.com/
http://thopre.wordpress.com/
8ecd2cd5666063da5ea09e8e39bb7bcc?d=identicon&s=25 Hello Guy (jobber)
on 2009-02-24 10:22
Thomas Preymesser wrote:
> Ja, klar. Hast du das Buch 'Ruby Cookbook'? Dort ist ein Beispiel, wie
> man ActiveRecord auch ohne Rails verwenden kann.
>
> Prinzipiell:
>
> Klasse Patient definieren
>
> zu Datenbank verbinden
> Schleife �ber alle einzulesenden Daten
>   Alle Attribute in Patient belegen
>   save aufrufen
> bei Datenbank abmelden
>
>
> -Thomas
also das buch habe ich leider nicht.
Klasse patient ist ja schon definiert in Rails in Model patient.rb.

muss ich die verbindung zur datenbank auch noch mal in diesem
separatesprogramm.rb herstellen, obwohl schon eine verbindung zur
datenbank in database.yml vorhanden ist? eigentlich ja oder? oder darf
ich die rails api mit dem separaten program nicht getrennt sehen?????

lg
8ecd2cd5666063da5ea09e8e39bb7bcc?d=identicon&s=25 Hello Guy (jobber)
on 2009-02-25 17:14
Hallo ich habe eine ganz andere frage:
ich kann die verbindung zur datenbank erstellen
[code]dbh = Mysql.real_connect("localhost", "arzu", "railswba",
"eventserver_development")[/code]
aber ich möchte nicht wie hier nach den zeilen fragen und die anzahl
ausgeben lassen,

[code]  # Erste Abfrage
  abfrage1 = dbh.query("SELECT name FROM animal WHERE name = 'tuna'")
  puts "Number of rows selected: #{dbh.affected_rows}"
 [/code]
sondern ich möchte den inhalt ausgeben lassen, mit welchem befehl kann
ich dies bewerkstellen? gibt es eine seite mit all den befehlen dazu?

[code]

  abfrage1 = dbh.query("SELECT * FROM animal WHERE name = 'tuna'")
  puts "Number of rows selected: #{dbh.????}"  ##ausgabe von category


[code]

lg mykavun
Cd6b438f1238ee36cf4daecbae1d3917?d=identicon&s=25 Thomas Preymesser (Guest)
on 2009-02-25 17:41
(Received via mailing list)
2009/2/24 Hello Guy <lists@ruby-forum.com>:
>>   Alle Attribute in Patient belegen
>>   save aufrufen
>> bei Datenbank abmelden
>>
>>
>> -Thomas
> also das buch habe ich leider nicht.

ist aber sehr empfehlenswert, was alle möglichen Themengebiete rund um
Ruby anbelangt.

> Klasse patient ist ja schon definiert in Rails in Model patient.rb.

wenn es über ein separates Programm laufen soll, mußt du auch dort
Patient noch definieren.

>
> muss ich die verbindung zur datenbank auch noch mal in diesem
> separatesprogramm.rb herstellen, obwohl schon eine verbindung zur
> datenbank in database.yml vorhanden ist? eigentlich ja oder? oder darf
> ich die rails api mit dem separaten program nicht getrennt sehen?????

es läßt sich sicher auch in die Rails-Applikation integrieren, aber
wenn mir von einem separaten Programm ausgehen, mußt du dort auch die
Verbindung zu Datenbank selbst handeln (ist aber auch nicht weiter
schlimm).

Hier ist mal ein Skript von mir, das in etwa das gleiche macht, du
müßtest es halt darauf anpassen, daß der Input nicht von einer
Webseite sondern aus einer Datei kommt.

require 'rss/2.0'
require 'open-uri'
require 'date'

require 'rubygems'
require 'active_record'

def activerecord_connect
  ActiveRecord::Base.establish_connection(:adapter => "mysql",
:host => "localhost",
:username => "root",
:password => nil,
:database => "jobs")
end

activerecord_connect

class Posts < ActiveRecord::Base
end

url='http://berlin.kijiji.de/f-SearchAdRss?CatId=65'
feed = RSS::Parser.parse(open(url).read, false)
# puts "=== Channels: #{feed.channel.title} ==="
feed.items.each do |item|
  found = Posts.find_by_pubdate(item.pubDate.to_s)
  unless found
    puts item.title
    puts item.pubDate
    puts item.description

    # TODO: uninteressante immer wieder gepostete
    # Angebote generell als uninteressant markieren
    if item.title =~ / Franzosen / or
       item.title =~ /MA aus UK\/USA\/Irland /
      interesting = false
    else
      interesting = true
    end
    # Mon, 19 Jan 2009 13:43:55 +0100
    # puts Date.strptime(item.pubDate,'')
    s = item.pubDate.to_s
    d = ParseDate.parsedate(s)
    dd = DateTime.new(d[0],d[1],d[2],d[3],d[4],d[5])
    pubtime = dd
    post = Posts.create(:pubdate => item.pubDate.to_s,
                        :pubtime => pubtime,
                        :title => item.title,
                        :link => item.link,
                        :description => item.description,
                        :interesting => interesting)
    puts "gespeichert"
  end
end


-Thomas

--
Thomas Preymesser
thopre@gmail.com
http://thopre.googlepages.com/
http://thopre.wordpress.com/
8ecd2cd5666063da5ea09e8e39bb7bcc?d=identicon&s=25 Hello Guy (jobber)
on 2009-02-25 23:32
ich habe eine anfrage gestellt:

a = Patient.find_by_sql("SELECT ev.name, co.type FROM events AS ev JOIN
competitions AS co ON ev.id = co.event_id")
    a.each do |row|
      puts "#{row[0]}\n"
    end

als ausgabe bekomme ich 4 leere zeilen (es treffen 4 sätze zu).
mache ich die ausgabe vielleicht falsch, oder wieso wird mir das
ergebnis nicht angezeigt?

habe ich vielleicht etwas vergessen zu definieren?

lg
8ecd2cd5666063da5ea09e8e39bb7bcc?d=identicon&s=25 Hello Guy (jobber)
on 2009-02-25 23:33
>
> -Thomas
>
> --
> Thomas Preymesser
> thopre@gmail.com
> http://thopre.googlepages.com/
> http://thopre.wordpress.com/

danke dir für deine hilfsbereitschaft
This topic is locked and can not be replied to.