最近用Python開發(fā)一個分析流程址否,需要讀取PostgrepSQL中的數(shù)據(jù)。
已經(jīng)知道的信息
- 在服務(wù)器上psql是以服務(wù)的形式開啟的。
- 我需要知道數(shù)據(jù)庫的host, port, database name, user, password等等才能連到數(shù)據(jù)庫哥纫。
如何連接PostgrepSQL
我的需求是用python來連接扎唾,使用psycopg2這個包召川。這個包的connect函數(shù)提供了兩種參數(shù)設(shè)置的方式,一種是用包含連接信息的字符串(dsn string)胸遇,一種是用關(guān)鍵字參數(shù)荧呐。
-
connect(string)
connect(dsn="dbname=test user=postgres password=secret")
Note: dsn 意思是 database string。 -
connect(*kwargs)*
connect(database="test", user="postpres", password="secret")
這里的例子用的都是最基本的參數(shù)纸镊,包括:
- database or dbname
- user
- password
- host(默認(rèn)是UNIX socket)
- port(默認(rèn)是5432)
弄清楚這些概念以后倍阐,終于連上數(shù)據(jù)庫了。
psycopg2讀取數(shù)據(jù)
psycopg2需要生成一個cursor對象才能對數(shù)據(jù)進(jìn)行操作逗威,具體的實例可以看這篇博客收捣。
import psycopg2
import psycopg2.extras
conn = psycopg2.connect(database='mydatabase', user='myname', password='mypass', host='myhost')
cursor = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
cursor.execute('sql語句')
res = cursor.fetchall()
psql查看數(shù)據(jù)庫里面的表
在讀取數(shù)據(jù)的時候很容易忘記了表名,這個時候想查看一下數(shù)據(jù)庫里面有哪些表庵楷,進(jìn)入服務(wù)器:
psql 數(shù)據(jù)庫名(比如test)
test=> \d
就能看到test數(shù)據(jù)庫下所有的表的信息。
psql 和 mysql
瀏覽了一下這篇文章楣颠,一個結(jié)論:
psql和mysql都是開源數(shù)據(jù)庫尽纽,PostgreSQL一向以強(qiáng)力支撐事務(wù)密集型企業(yè)應(yīng)用而著名,但許多網(wǎng)站也用它來支撐Web應(yīng)用程序童漩,相反弄贿,MySQL一直都是Web應(yīng)用程序的首選數(shù)據(jù)庫,但它在事務(wù)型企業(yè)應(yīng)用系統(tǒng)中也得到了大量使用矫膨。
如果關(guān)心psql的具體使用
可以參考這本書差凹,來自oreilly。