如何查询postgreSQL数据库以检查是否存在值?

时间:2017-06-14 03:28:52

标签: ruby-on-rails ruby postgresql

大家好,感谢你们的出色工作。

我正在使用ruby on rails和postgresql构建一个应用程序。我已成功连接到我的数据库,我可以查询数据库并在控制台中可视化响应没有问题。

我的数据库包含美国的所有邮政编码和城市(45k +行)。下一个setp将是从用户那里获得输入,查询zip-code列以查看zipcode是否存在并返回(是)如果是,并且(否)如果不存在。

这是我的代码:

class PgGem_test
    @failmess = "Error : the postgreSQL gem has not been loaded correctly"
    begin
        @var_pg = require 'pg'
    rescue LoadError
        puts "#@var_pg | #@failmess"
    end
end

conn = PGconn.connect(:hostaddr=>"127.0.01", :port=>5432, :dbname=>"wp-app", :user=>"postgres", :password=>'Password2017')

res = conn.exec("select * from us_cities")

res.each { |row|
    id = res[0]['id']
    name = res[0]['name']
    zip_codes = res[0]['zip_codes']


    puts "id="+row['id']+ " | name="+row['name']+ " | zip code="+row['zip_codes']
}

conn.close

它会返回类似的东西

id=45395 | name=West Hamlin | zip code=25506 25571
id=45396 | name=West Liberty | zip code=26003 26074
id=45397 | name=West Logan | zip code=25601
id=45398 | name=West Milford | zip code=26451
id=45399 | name=Weston | zip code=26452
id=45400 | name=Westover | zip code=26501
id=45401 | name=West Union | zip code=26456
id=45402 | name=Wheeling | zip code=26003
id=45403 | name=White Hall | zip code=26554
id=45404 | name=White Sulphur Springs | zip code=24925 24986
id=45405 | name=Whitesville | zip code=25209
id=45406 | name=Whitmer | zip code=26296
id=45407 | name=Wiley Ford | zip code=26753 26767
id=45408 | name=Williamson | zip code=25661
id=45409 | name=Williamstown | zip code=26187
id=45410 | name=Windsor Heights | zip code=26075
id=45411 | name=Winfield | zip code=25213
id=45412 | name=Wolf Summit | zip code=26422 26426
id=45413 | name=Womelsdorf (Coalton) | zip code=26257

我想从用户(zipcode)查询zipcode列的输入,以检查zipcode是否退出并返回响应。

我不知道从哪里开始,并希望得到一些帮助。

由于

1 个答案:

答案 0 :(得分:-1)

您的查询将是,

conn = PGconn.connect(:hostaddr=>"127.0.01", :port=>5432, :dbname=>"wp-app", :user=>"postgres", :password=>'Password2017')
sql = "SELECT \"us_cities\".* FROM \"us_cities\" WHERE \"us_cities\".\"zip_codes\" = #{params[:zip_code]}"
res = conn.exec(sql)
p res.present?
conn.close

我只是想知道,尽管在轨道上,你没有使用activerecord,如果你这样做,你只是这样做,

UsCity.where(zip_codes: params[:zip_code]).exists?
#=> true/false