继mysql、redis、mongodb、hbase这几个不同的数据据库后,又发现了个宝藏数据库,真的很不错诶。
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行,
花了一晚简单学习了一下,发现和mysql的操作非常相近,那么学过mysql的上手就会很容易啦,没学过的也不要紧,常用操作也不是太复杂,但功能却很强大(ps 命令行成功操作后没有提示这一点希望以后能改善一下)。
这个是postgresql的官方网站,你可以下载和查看相关教程:https://www.postgresql.org/
这个菜鸟教程也很不错:https://www.runoob.com/postgresql/postgresql-tutorial.html
Ubuntu 可以使用 apt-get 安装 PostgreSQL:
sudo apt-get update
sudo apt-get install postgresql postgresql-client
安装完毕后,系统会创建一个数据库超级用户 postgres,密码为空。
# sudo -i -u postgres
这个时候pwd一下,你会发现不是以往的用户名home路经,而是postgresql数据库的home目录
postgres@ubuntu:~$pwd
/var/lib/postgresql
这时使用以下命令进入 postgres,输出以下信息,说明安装成功:
~$ psql
psql (9.5.21)
Type "help" for help.
postgres=#
输入以下命令退出 PostgreSQL 提示符:
\q
PostgreSQL 安装完成后默认是已经启动的,但是也可以通过下面的方式来手动启动服务。
sudo /etc/init.d/postgresql start # 开启
sudo /etc/init.d/postgresql stop # 关闭
sudo /etc/init.d/postgresql restart # 重启
windows下的安装:https://www.runoob.com/postgresql/windows-install-postgresql.html
postgresql的命令行操作可参考官方网站或其他教程
首先要安装psycopg2 –> pip install psycopg2、 pip install psycopg2-binary
1、连接到数据库
import psycopg2 #导入相关模块
#传入参数 数据库名 用户名 用户密码 主机地址 端口
conn = psycopg2.connect(database="mydb", user="postgres", password="123456as", host="127.0.0.1", port="5432")
print "Ok"
如果你未设置密码的话,到这里你会发现报错 FATAL: password authentication failed for user "postgres"
安装PostgreSQL之后,PostgreSQL会在系统中创建一个名为“postgres”当用户。PostgreSQL的默认用户名和数据库也是“postgres”,不过没有默认密码。在安装PostgreSQL之后可以以默认用户登录,也可以创建新当用户名。
需要手动设置密码
ubuntu@ubuntu:~ $ sudo su postgres
#切换至postgres or sudo -i -u postgres
postgres@ubuntu /home/ubuntu $ psql postgres#登入默认数据库
[sudo] passwordfor ubuntu:
psql (9.5.21)
Type "help" for help.
以上命令也可以简化为:
ubuntu@ubuntu ~ $ sudo -u postgres psql postgres
登录之后给默认用户“postgres”设置密码
postgres=# \password postgres #给postgres用户设置密码
Enter new password:
Enter it again:
postgres=#
psql的连接建立于Unix Socket上默认使用peer authentication,所以必须要用和 数据库用户 相同的 系统用户 进行登录。
需要将peer authentiction 改为 md5,并给数据库设置密码。修改配置文件,/etc/postgresql/x.x/main/pg_hba.conf
local all postgres peer
// change to
local all postgres md5
重新启动pgsql,
/etc/init.d/postgresql restart
2、创建表
import psycopg2
conn = psycopg2.connect(database="mydb", user="postgres", password="123456as", host="127.0.0.1", port="5432")
cur = conn.cursor() #建立操作游标
#传入的参数是 SQL 建表语句
cur.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
print "ok"
conn.commit() #注意,只有commit一下才会生效
conn.close()
3、插入数据
import psycopg2
conn = psycopg2.connect(database="mydb", user="postgres", password="123456as", host="127.0.0.1", port="5432")
cur = conn.cursor()
#让它ID自动生成
cur.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ( 'Paul', 32, 'California', 20000.00 )");
#注意这里还可以返回插入数据的ID
results = cur.fetchone()
ID = results[0] #返回插入的记录的id 便于后续操作
conn.commit()
conn.close()
4、删除数据
import psycopg2
conn = psycopg2.connect(database="mydb", user="postgres", password="123456as", host="127.0.0.1", port="5432")
cur = conn.cursor()
cur.execute("DELETE from COMPANY where ID=2;")
conn.commit
conn.close()
5、更新数据
import psycopg2
conn = psycopg2.connect(database="mydb", user="postgres", password="123456as", host="127.0.0.1", port="5432")
cur = conn.cursor()
cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit
conn.close()
6、查询数据
import psycopg2
conn = psycopg2.connect(database="mydb", user="postgres", password="123456as", host="127.0.0.1", port="5432")
cur = conn.cursor()
cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall() #这里返回查询的所有数据集
conn.close()