Подтвердить что ты не робот

Учебники Ruby PostgreSQL

Я пытаюсь написать ruby ​​ script, который взаимодействует с базой данных PostgreSQL. Я пытаюсь собрать вместе, как это сделать из документации, но хороший учебник или образец кода будут творить чудеса, чтобы уменьшить время, затрачиваемое на это. Если у кого-то есть ссылка, некоторые советы или есть код, который они могли бы поделиться, я был бы очень благодарен.

Изменить, сделайте это примечание более понятным:

Примечание: это не связано с рельсами ActiveRecord, я пишу Ruby script, который будет задействован в программе, полностью независимой от Rails.

4b9b3361

Ответ 1

Вам понадобится только камень pg и установить соединение с БД:

require 'pg'

ActiveRecord::Base.establish_connection(:adapter => "postgresql"
                                        :username => "username",
                                        :password => "password",
                                        :database => "database")

Когда вы определяете модели, наследуемые от ActiveRecord::Base, они будут использовать это соединение с базой данных. Все остальное должно работать так, как в Rails.

Ответ 2

Просьба уточнить, какую библиотеку postgresql вы используете.

Я собираюсь принять жемчужину "pg", кроме ActiveRecord.

У источника проекта есть html файл, который может быть полезен. Перейдите к https://bitbucket.org/ged/ruby-pg/src/b477174160c8/doc/postgres.html Затем нажмите "raw" в верхней правой части html. Откройте файл в своем веб-браузере.

Этот пример кода поможет вам подключиться (скопировано из html файла):

require "postgres"
conn = PGconn.connect("localhost", 5432, "", "", "test1")
# or: conn = PGconn.open('dbname=test1')
res = conn.exec("select * from a;")

Объект res является PGResult. Прокрутите вниз до этого раздела в html, чтобы узнать, какие методы вы можете назвать.

В этой ссылке есть пример PGResult: http://rubydoc.info/gems/pg/0.10.0/PGresult

Выдержки:

require 'pg'
conn = PGconn.open(:dbname => 'test')
res  = conn.exec('SELECT 1 AS a, 2 AS b, NULL AS c')
res.getvalue(0,0) # '1'
res[0]['b']       # '2'
res[0]['c']       # nil

Ответ 3

Я подтверждаю, что пакет postgres устарел, вам нужно "pg".

Мне потребовалось много времени, чтобы получить базовый select * from films, работающий с ruby ​​и postgres. Как я добрый, вот мой код:

подготовка postgres (база данных = megatest user = roger pass = 123456 table = films)

$ su postgres 
psql 
CREATE USER roger WITH PASSWORD '123456';

GRANT ALL PRIVILEGES ON DATABASE megatest to roger;

megatest=# GRANT SELECT ON films TO PUBLIC;

Подготовка пакета PG

sudo gem install pg

Код Ruby

require 'pg'

conn=PGconn.connect( :hostaddr=>"127.0.0.1", :port=>5432, :dbname=>"megatest", :user=>"roger", :password=>'123456')
# or for a non IP address :host => 'my.host.name.com' instead of hostaddr

# run the query
res = conn.exec("SELECT * FROM films")

# Ran only once in order to get field Name
fieldArray=res.fields()
fieldArray.each do |elem|
    print "elem="+elem+"\n"
end

# print data from the query
res.each{ |row|
    puts "Code="+row["code"]  +" title="+row["title"] +" did="+row["did"] +" date_prod="+row["date_prod"] +" kind="+row["kind"] +" len="+row["len"]
}

Результаты

[email protected]:/home/eblain/ruby# ruby postgresTest.rb
Code=UA502 title=Bananas did=105 date_prod=1971-07-13 kind=Comedy len=01:22:00
Code=UA503 title=Cowboy did=105 date_prod=1979-07-13 kind=Horror len=01:32:00
Code=UA544 title=YoBro did=105 date_prod=1981-07-13 kind=Action len=01:42:00

Ответ 4

Для параметризованных операторов SQL вы должны использовать PGconn#exec_params, например.

conn = PGconn.new(:dbname => 'test')
conn.exec_params(
    'INSERT INTO comedians (first_name, last_name) VALUES ($1, $2)',
    ['Louis', 'CK'])
conn.close

Источник: http://deveiate.org/code/pg/PGconn.html

Посмотрите здесь для получения полного списка параметров, которые могут быть переданы конструктору PGconn.