为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/`
评论
发表评论