前言
距離上一次用這個資料庫已經很久了,這次自己架設才發現一堆問題。
其中有,資料表、欄位名稱大小寫,遠端連線,Docker安裝方式、Python連線方式
正文
1.Postgre資料表及欄位大小寫
照一般寫SQL以及程式命名的習慣,都用駝峰式命名原則,結果再寫Postgres的時候就踢到鐵板了,一直跟我說該欄位不存在。
後來一查,才知道建立table或column時,如果有大寫字母,沒關係。
但在查詢的時候,要針對大寫的字母加上雙引號(”)
今天表格名稱叫abcRecord,
那查詢時要寫成
select * from “abcRecord”
欄位也是一樣,在abcRecord內有一個欄位為 userInfo
那寫的時候也必須加上雙引號
select * from “abcRecord” where “userInfo”=10
2.Docker架設Postgres
在hub.docker裡面就有Postgres的原始說明經過我後續的拼拼湊湊,最終結果是這段。
docker run -d -p 3001:5432 --name postgres -e POSTGRES_USER=admin-e POSTGRES_PASSWORD=Xdsasbva -v ~/pgdata:/var/lib/postgresql/data postgres
參數說明,請看 [Docker]常用指令大集合
3.Docker架設Mongo
因為要改一堆設定,才有辦法設定不允許外部連線,但想了想,這台伺服器我打掉重練的次數可能會很頻繁,
如果每次都要重新設定,那就失去用docker的意義了。
(其實是
docker run -d --name mongodb -v ~/mongo:/data/db -v /home/user/mongo.conf:/etc/mongo.conf -p 3001:27017 mongo
需掛載兩個volume,要打兩次-v
4.Postgres遠端連線設定
從2的地方可以得知,我們將container內的 postgresql/data跟 實體的pgdata連在一起,故直接到pgdata內尋找以下兩個檔案,並確認下面的參數
1.postgresql.conf
listen_addresses =’*’
port = 5432
pb_hba.conf
host all all 0.0.0.0/0 password
再來可以利用 dbeaver 這套軟體測試連線至Postgres
5.Python連線方式
import psycopg2
conn = psycopg2.connect(database="forex", user="admin", password="Xassdfva", host="123.456.78.9", port="3001")
try:
cursor = conn.cursor()
# 如果有欄位或資料表名稱大寫,必須加上"" 包起來
postgres_insert_query = """ INSERT INTO "faddRecord" (account,balance,equity,"createDate") VALUES (%s,%s,%s,CURRENT_DATE)"""
record_to_insert = ('3223231', 10932, 950)
cursor.execute(postgres_insert_query, record_to_insert)
conn.commit()
count = cursor.rowcount
print (count, "Record inserted successfully into mobile table")
except (Exception, psycopg2.Error) as error :
if(conn):
print("Failed to insert record into mobile table", error)
finally:
#closing database connection.
if(conn):
cursor.close()
conn.close()
print("PostgreSQL connection is closed")
如果安裝psycopg2失敗的話,請看 [Scrapyd]在Scrpayd container內安裝postgreSQL
ref.PostgreSQL中表名、欄位名大小寫問題
如何設定PostgreSQL允許被遠端訪問
[程式][Postgresql] 如何遠端連線?
Python PostgreSQL Insert, Update and Delete table data to Perform CRUD Operations
PostgreSQL日期時間DATE/TIME
0 意見:
張貼留言