Postgresql 首接触

引子

Postgresql 数据库
想学习下这个数据库有什么特别的东西

环境

  • centos7
  • postgresql 10
  • docker 17

目的

记录postgresql 安装和首次使用遇到的小白问题

安装

我是使用的Docker安装的,非常简单的命令

创建 docker-compose.xml 文件,键入下面内容

1
2
3
4
5
6
version: '3'

services:
db:
image: postgres
container_name: ps01
1
docker-compose up -d

这样就产生了一个容器 ps01

首次使用

开始 找了很多网上的资料想知道,怎么进postgresql命令行,结果怎么都不知道

最后还是:

进容器里面看

1
docker exec -it ps01 bash

偶然官网发现使用postgresql 默认用户名为 postgres

键入命令行

1
psql -U postgres

这样就直接进入 sql命令行了,这个是本地操作,估计本地是不需要输入用户密码的

接着我就下载了一个远程链接的软件,想远程连上数据库

不填密码,就不让链接

继续Google,百度

说默认密码是随机的

可以重新设置,后台进入容器,调出SQL命令行

键入命令,设置用户 postgres 用户名密码

1
ALTER USER postgres WITH PASSWORD 'postgres';
1
\q

退出Sql命令行

注意:

  • 密码postgres要用引号引起来
  • 命令最后有分号

接着我用这个密码就可以远程连接查看数据库信息了

关于和Django使用的事

我的Django 开始使用的是 Sqlite 数据库

导出原先的sqlite 数据库信息

进入Django 后台操作

1
./manage.py dumpdata > dump.json

修改数据库驱动为Postgresql

xx/setting.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

"""
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
"""

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'testdb',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'POST': 5432,
}
}

Postgresql 创建需要的数据库

sql 进入命令行操作

1
2
create database testdb;
\q

Django 创建需要用到的表格文件

1
2
3
4
# 1. 创建更改的文件
./manage.py makemigrations
# 2. 将生成的py文件应用到数据库
./manage.py migrate

导入原先导出好的数据文件

1
./manage.py loaddata dump.json

继续研究发现 通过docker-compose 可以配置用户名密码等设置

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3'

services:
db:
image: postgres
container_name: ps01
environment:
POSTGRES_USER:postgres
POSTGRES_PASSWORD:example
expose:
- "5432"
ports:
- "5432:5432"