一、docker安裝postgres
Docker是一種開(kāi)源容器化平臺(tái),它允許開(kāi)發(fā)人員在輕松可移植的環(huán)境中構(gòu)建、部署和運(yùn)行應(yīng)用程序。PostgreSQL是一種強(qiáng)大的關(guān)系型數(shù)據(jù)庫(kù),它是一種開(kāi)源軟件,提供了高可靠性、可擴(kuò)展性和安全性。
在Docker中使用PostgreSQL,您可以通過(guò)Docker Hub上的PostgreSQL官方鏡像來(lái)創(chuàng)建一個(gè)容器,然后在其中運(yùn)行PostgreSQL服務(wù)。以下是在Docker中使用PostgreSQL的一些常見(jiàn)步驟:
1.1 安裝Docker:
請(qǐng)按照您的操作系統(tǒng)的指南安裝Docker。安裝完成后,您可以在終端中運(yùn)行docker命令,驗(yàn)證Docker是否正確安裝。
1.2 從Docker Hub獲取PostgreSQL鏡像
運(yùn)行以下命令從Docker Hub上獲取最新版本的PostgreSQL鏡像:
docker pull postgres
1.3 創(chuàng)建PostgreSQL容器
運(yùn)行以下命令以創(chuàng)建一個(gè)新的PostgreSQL容器。其中,-e 參數(shù)用于設(shè)置環(huán)境變量,-p 參數(shù)用于將容器端口映射到主機(jī)端口,-v 參數(shù)用于將主機(jī)目錄掛載到容器內(nèi)的目錄。
docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword
-e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v /my/local/path:/var/lib/postgresql/data -d postgres
在上面的命令中,my-postgres是容器的名稱(chēng),POSTGRES_PASSWORD是PostgreSQL的管理員psd,-p 5432:5432將容器的5432端口映射到主機(jī)的5432端口,/my/local/path 是主機(jī)上的目錄(可自行設(shè)置),將用于容器中的PostgreSQL數(shù)據(jù)。
1.4 訪問(wèn)PostgreSQL
現(xiàn)在,您可以使用以下命令進(jìn)入正在運(yùn)行的容器:
docker exec -it my-postgres psql -U postgres
這將打開(kāi)一個(gè)交互式PostgreSQL shell,您可以在其中執(zhí)行SQL命令。
這些是在Docker中使用PostgreSQL的一些基本步驟。您還可以使用其他Docker命令來(lái)管理容器,例如docker stop、docker start和docker rm等。
二. python連接postgres數(shù)據(jù)庫(kù)
python連接postgresql數(shù)據(jù)庫(kù)
postgresql是常用的關(guān)系型數(shù)據(jù)庫(kù),并且postgresql目前還保持著全部開(kāi)源的狀態(tài),所以我們今天就一起來(lái)學(xué)習(xí)一下,如何用python連接postgresql。
安裝psycopg
pip install psycopg2
官方文檔地址:
https://www.psycopg.org/docs/cursor.html
連接數(shù)據(jù)庫(kù)操作流程
若是增、刪、更等操作,則操作流程為:
- connect連接
- 獲取游標(biāo)對(duì)象cursor
- 執(zhí)行sql得到結(jié)果execute
- 操作成功執(zhí)行提交commit
- 關(guān)閉連接釋放資源
若是查詢(xún),則操作流程為:
- connect連接
- 獲取游標(biāo)對(duì)象cursor
- 執(zhí)行sql得到結(jié)果 execute
- 獲取數(shù)據(jù)
- 關(guān)閉連接釋放資源
查詢(xún)結(jié)果和增刪改其他操作步驟都一樣,只有第四步的時(shí)候,有些許差別。
2.1 connect連接
connect連接
psycopg2.connect(dsn=None , connection_factory=None , cursor_factory=None , async=False , \*\*kwargs)
創(chuàng)建得到一個(gè)新的數(shù)據(jù)庫(kù)會(huì)話并返回一個(gè)新的connection對(duì)象。
可以使用dsn參數(shù)將連接參數(shù)指定為libpq連接字符串:
conn = psycopg2.connect("dbname=test user=postgres password=secret")
或者用一組關(guān)鍵字參數(shù):
conn = psycopg2.connect(dbname="test", user="postgres", password="secret")
或者兩者混用,如果在兩個(gè)源中指定了相同的參數(shù)名稱(chēng),則關(guān)鍵字參數(shù)值將優(yōu)先于dsn參數(shù)。
注意,需要dsn或至少一個(gè)與連接相關(guān)的關(guān)鍵字參數(shù)。
基本的連接參數(shù):
- dbname - 數(shù)據(jù)庫(kù)名稱(chēng)
- user - 用于驗(yàn)證的用戶名
- password - 用于驗(yàn)證的psd
- host - 數(shù)據(jù)庫(kù)主機(jī)地址
- port - 連接的端口號(hào)(默認(rèn)5432)
示例:
conn = psycopg2.connect(database='test',user='postgres',password='123456',host='localhost',port='5432')
2.2 cursor
cursor
cursor ( name = None , cursor_factory = None , scrollable = None , withhold = False )
使用連接返回一個(gè)新cursor對(duì)象。
示例:
cursor = conn.cursor()
2.3 excute執(zhí)行sql語(yǔ)句
從上面cursor()后得到一個(gè)游標(biāo)對(duì)象,該游標(biāo)對(duì)象使用execute方法或者executemany方法執(zhí)行sql語(yǔ)句。
- execute(query, vars=None)
cursor.execute(sql)
- executemany(query, vars_list)
cursor.executemany(sql)
2.4 提交結(jié)果
若是增加,刪除,更改表中的數(shù)據(jù),修改后必須提交才能生效。
conn.commit()
2.5 獲取數(shù)據(jù)
若是查詢(xún)數(shù)據(jù)的時(shí)候,我們需要檢索函數(shù)獲取數(shù)據(jù),常用的函數(shù)有fetchone(),fetchmany(),fetchall() 。
-
fetchone()
返回一個(gè)元組,元組中是結(jié)果集的下一行。當(dāng)沒(méi)有數(shù)據(jù)可用時(shí),則返回None。 -
fetchmany([size=cursor.arraysize])
返回一個(gè)元組,元組中是下一組結(jié)果的結(jié)果集。當(dāng)沒(méi)有更多行可用時(shí),返回一個(gè)空列表。
每次調(diào)用要獲取的行數(shù)由參數(shù)指定。如果未給出,則游標(biāo)arraysize確定要獲取的行數(shù)。
在不傳參數(shù)的情況下,默認(rèn)只返回第一條數(shù)據(jù),若是在括號(hào)里傳入數(shù)字,表示獲取幾條數(shù)據(jù),則最后的結(jié)果就會(huì)返回幾條。 -
fetchall()
獲取查詢(xún)結(jié)果的所有(剩余)行,將它們作為元組列表返回。如果沒(méi)有更多記錄可獲取,則返回一個(gè)空列表。
2.6 關(guān)閉連接
conn.close()
示例
# -*- coding: utf-8 -*-
import psycopg2
## 建立connect 連接
conn = psycopg2.connect(database='test',user='postgres',password='xxxxxx',host='localhost',port='5432')
# 游標(biāo)
cur = conn.cursor()
# 執(zhí)行sql
# 建表
cur.execute('create table tname(id int,name varchar);')
# 插入數(shù)據(jù)
cur.execute('insert into tname values (1,\'張三\');');
t_table=((2,'李四'),(3,'王五'))
cur.executemany('insert into tname values (%s,%s)',t_table)
# 提交數(shù)據(jù)
conn.commit()
# 關(guān)閉連接
conn.close()
得到結(jié)果如下圖:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-690444.html
import psycopg2
## 建立connect 連接
conn = psycopg2.connect(database='test',user='postgres',password='xxxxxx',host='localhost',port='5432')
# 游標(biāo)
cur = conn.cursor()
# 執(zhí)行sql
cur.execute('select * from tname;')
# 獲取數(shù)據(jù)
rows = cur.fetchall()
for row in rows:
print(row)
# 關(guān)閉連接
conn.close()
得到結(jié)果如下圖:
好啦,本文到這里就結(jié)束啦。
感謝您的閱讀~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-690444.html
到了這里,關(guān)于postgres篇---docker安裝postgres,python連接postgres數(shù)據(jù)庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!