2017-06-14 184 views
0

大家好,谢谢你在这里的出色工作。如何查询postgreSQL数据库来检查值是否存在?

我正在用rails和postgresql构建一个ruby应用程序。我已经成功连接到我的数据库,并且我可以查询数据库并在控制台中直观显示响应,而不会造成任何问题。我的数据库包含美国的所有邮编和城市(45k +行)。下一个setp将获得用户的输入,查询邮政编码列以查看邮政编码是否存在,如果是,则返回(是);否则返回(是)。

这里是我的代码:

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 

我想从用户(邮编)获取输入查询邮政编码列只检查邮编退出并返回响应。

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

感谢

回答

-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 

我只是想知道,在轨道上inspite,不使用activerecord,如果你这样做,你只需做,

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

我计划是为了避免使用活跃的记录,但我仍然与我的同事辩论最好的方法去看看 – coco

+0

我明白了,所以答案对你有意义吗? –

+0

锄头是否适合我的实际代码? – coco

相关问题