ruby-on-rails - 如何使用 ruby​​ pg gem 列出 postgresql 数据库?

标签 ruby-on-rails ruby postgresql

<分区>

抱歉这个基本问题。我是 postgresql 的新手。 我想使用一些 gem(pg gem?)来查明某个 postgresql 数据库是否存在。

有类似的吗?

PG.does_exist?('my_test_db')

或者当我只是尝试连接时,如果数据库不存在,它会抛出异常吗?

begin
  con = PG.connect :dbname => 'my_test_db'
rescue PG::Error => e
  puts e.message
ensure
  con.close if con
end

这仍然留给我一个问题,即如何列出存在的数据库。

背景: 使用我可以执行的命令行:

psql -lt

我可以在哪里看到我所有的数据库。使用非常丑陋的文本操作,您可以查询数据库是否存在。但肯定有一种方法可以使用 ruby​​ gem 来做到这一点。

最佳答案

您还可以连接到 template1 数据库,然后列出所有数据库

SELECT datname FROM pg_database WHERE datistemplate = false;

类似

# Output list of all databases
conn = PG.connect( dbname: 'template1' )
conn.exec( "SELECT datname FROM pg_database WHERE datistemplate = false;" ) do |result|
  result.each do |row|
    puts row.values_at('datname')
  end
end

关于ruby-on-rails - 如何使用 ruby​​ pg gem 列出 postgresql 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38363131/

相关文章:

python - Fabric 和 Sudo 作为另一个用户

sql - 如何在 postgres 中的 id 字段上实现一个简单的主键

python - 在 python 连接对象中发生异常之前,如何提交所有挂起的查询

mysql - Mac OS 10.6 服务器无法安装 mysql gem

ruby-on-rails - 如何在 View 中启用 Rails I18n 翻译错误?

ruby-on-rails - 让 find_by in rails 返回多个结果

ruby-on-rails - 有条件地在 Rails 的 url 路径中包含参数

javascript - 与 Rails 和 Javascript 共享模板

mysql - 如何在 rails 中的几列上执行求和和平均

ruby - 如何在 ruby​​ 中执行惯用的非递归展平?