postgresql的安装使用,以及python的增删改查操作

继mysql、redis、mongodb、hbase这几个不同的数据据库后,又发现了个宝藏数据库,真的很不错诶。

PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行,

花了一晚简单学习了一下,发现和mysql的操作非常相近,那么学过mysql的上手就会很容易啦,没学过的也不要紧,常用操作也不是太复杂,但功能却很强大(ps 命令行成功操作后没有提示这一点希望以后能改善一下)。

这个是postgresql的官方网站,你可以下载和查看相关教程:https://www.postgresql.org/

这个菜鸟教程也很不错:https://www.runoob.com/postgresql/postgresql-tutorial.html

Ubuntu 安装 PostgreSQL

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的命令行操作可参考官方网站或其他教程

这里简单整理一下python操作其增删改查:

首先要安装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()

 

你可能感兴趣的:(数据库)