首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby PostgreSQL教程

Ruby PostgreSQL教程
EN

Stack Overflow用户
提问于 2011-04-14 12:50:58
回答 4查看 31.1K关注 0票数 14

我正在尝试编写一个与PostgreSQL数据库交互的ruby脚本。我正在尝试从文档中拼凑出如何做到这一点,但一个很好的教程或示例代码将会创造奇迹,减少让它工作的时间。如果任何人有一个链接,一些提示或他们可以分享的代码,我将不胜感激。

编辑,使此注释更清晰:

注意:这与Rails ActiveRecord无关,我正在编写一个Ruby脚本,它将包含在一个完全独立于rails的程序中。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-14 12:55:11

您只需要pg gem并建立到数据库的连接:

代码语言:javascript
运行
复制
require 'pg'
# require 'active_record'  # uncomment for not Rails environment

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

当您定义要从ActiveRecord::Base继承的模型时,它们将使用此数据库连接。其他一切都应该像在Rails中一样工作。

票数 4
EN

Stack Overflow用户

发布于 2011-04-14 13:36:13

请详细说明您正在使用的postgresql库。

我将假设除了ActiveRecord之外的'pg‘gem。

项目源代码中有一个html文件,它可能会对您有所帮助。转到https://bitbucket.org/ged/ruby-pg/src/b477174160c8/doc/postgres.html,然后单击html右上角的"raw“。在web浏览器中打开该文件。

此示例代码帮助您连接(从html文件复制):

代码语言:javascript
运行
复制
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

摘录:

代码语言:javascript
运行
复制
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
票数 20
EN

Stack Overflow用户

发布于 2012-09-27 22:17:51

我确认,"postgres“包已经过时了,你需要"pg”。

仅仅是为了让一个基本的select * from films能够与ruby和postgres一起工作,我就花了很多时间。因为我很友好,所以下面是我的代码:

postgres准备(database=megatest user=roger pass=123456 table=films)

代码语言:javascript
运行
复制
$ 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包准备

代码语言:javascript
运行
复制
sudo gem install pg

Ruby代码

代码语言:javascript
运行
复制
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"]
}

结果

代码语言:javascript
运行
复制
root@eblain-VirtualBox:/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
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5658702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档