最近用Python开发一个分析流程,需要读取PostgrepSQL中的数据。
已经知道的信息
- 在服务器上psql是以服务的形式开启的。
- 我需要知道数据库的host, port, database name, user, password等等才能连到数据库。
如何连接PostgrepSQL
我的需求是用python来连接,使用psycopg2这个包。这个包的connect函数提供了两种参数设置的方式,一种是用包含连接信息的字符串(dsn string),一种是用关键字参数。
-
connect(string)
connect(dsn="dbname=test user=postgres password=secret")
Note: dsn 意思是 database string。 -
connect(*kwargs)*
connect(database="test", user="postpres", password="secret")
这里的例子用的都是最基本的参数,包括:
- database or dbname
- user
- password
- host(默认是UNIX socket)
- port(默认是5432)
弄清楚这些概念以后,终于连上数据库了。
psycopg2读取数据
psycopg2需要生成一个cursor对象才能对数据进行操作,具体的实例可以看这篇博客。
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查看数据库里面的表
在读取数据的时候很容易忘记了表名,这个时候想查看一下数据库里面有哪些表,进入服务器:
psql 数据库名(比如test)
test=> \d
就能看到test数据库下所有的表的信息。
psql 和 mysql
浏览了一下这篇文章,一个结论:
psql和mysql都是开源数据库,PostgreSQL一向以强力支撑事务密集型企业应用而著名,但许多网站也用它来支撑Web应用程序,相反,MySQL一直都是Web应用程序的首选数据库,但它在事务型企业应用系统中也得到了大量使用。
如果关心psql的具体使用
可以参考这本书,来自oreilly。