2017-06-14 537 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