为Django配置PostgreSQL数据库


摘自: [digitalocean](https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-14-04)
### 1. 更新软件源
最好更新,像在路由器OpenWRT中,不更新就找不到包。
`sudo apt-get update`

### 2. 审核教程给的代码
```bash
sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib
```
结论:无毒,必要,可以复制了按回车运行。

`python3`,就用第3版,迟早要升级的。 
`python3-dev`:开发全套装上,不带dev的python是给用户用的,应该少了很多东西; 
`pip`:python用它来装程序; 
`libpq-dev`:包含了你为PSQL开发第三方应用所需要的必备精简文件; 
`postgregresql`:本文主角; 
`postgregresql-contrib`:更多功能。 

### 3. 配置PostgreSQL
```bash
#切换成postgres用户。这个用户名是刚才安装的东西所创建的。
sudo su - postgres
#进入数据库命令行
psql
#创建数据库名
CREATE DATABASE googlesite;
#创建数据库用户和密码。暂时不针对哪个特定的数据库。
CREATE USER googlesiteuser WITH PASSWORD 'NoPaSsWoRd';
#防止编码问题。使用万国码,Django也推荐你用utf-8。
ALTER ROLE googlesiteuser SET client_encoding TO 'utf8';
#只让django、googlesiteuser读取已经提交了的操作。提交:数据库用语,比如转账,扣钱、加钱都完成后才提交,还没加钱你就想读这行数据,不给。
ALTER ROLE googlesiteuser SET default_transaction_isolation TO 'read committed';
#设置时区。https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
ALTER ROLE googlesiteuser SET timezone TO 'Asia/Shanghai';
GRANT ALL PRIVILEGES ON DATABASE googlesite TO googlesiteuser;
#退出数据库管理界面 quit。
\q
#退出linux用户postgres
exit 0
```

### 4. 安装python独立环境,更好地解决版本依赖问题
```bash
sudo pip3 install virtualenv

mkdir ~/googlesite
cd ~/googlesite
virtualenv googlesiteenv
source googlesiteenv/bin/activate
(googlesiteenv)user@host:~/googlesite$
pip3 install django psycopg2
django-admin.py startproject googlesite
```

### 5. 更改数据库
修改默认的轻量级数据库sqlite为强大的PostgreSQL
```bash
nano ~/googlesite/googlesite/settings.py
```

```python3
# settings.py
. . .
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
. . .
# 改为:
. . .
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'googlesite',
        'USER': 'googlesiteuser',
        'PASSWORD': 'NoPaSsWoRd',
        'HOST': 'localhost',
        'PORT': '',
    }
}
. . .
```

# 6. 使Django配置生效
生成SQL语句,创建数据库和表。
```bash
cd ~/myproject
python manage.py makemigrations
python manage.py migrate
```
# 7. 启动Django自带的服务器
`python manage.py runserver 0.0.0.0:8000`

# 8. 测试效果
浏览器打开页面测试是否迁移成功。 
`http://server_domain_or_IP:8000` 
`http://server_domain_or_IP:8000/admin/` 

评论

此博客中的热门博文

Windows下ShadowSocks客户端安装和配置 顺带KCP

How to Install KeePass on M1 Mac

How User Friendly is a MacOS