How To Use PostgreSQL With Your Django Application On Ubuntu 20.04 - DigitalOcean
How To Use PostgreSQL With Your Django Application On Ubuntu 20.04 - DigitalOcean
04 | DigitalOcean
CONTENTS
Prerequisites
Step 1 – Installing the Components from the Ubuntu Repositories
Step 2 – Creating a Database and Database User
Install Django within a Virtual Environment
Configure the Django Database Settings
Migrate the Database and Test your Project
Conclusion
// Tutorial //
Ubuntu 20.04
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 1/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Introduction
You will need a clean Ubuntu 20.04 server instance with a non-root user
configured with sudo privileges. Learn how to set this up by following our initial
server setup guide.
When you are ready to continue, log in as your sudo user.
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 2/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Repositories
First you will install the essential components. This includes pip , the Python package
manager for installing and managing Python components, and also the database
software with its associated libraries.
You will be using Python 3, which ships with Ubuntu 20.04. Start the installation by
typing:
$ sudo apt update Copy
$ sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib
With the installation out of the way, you can move on to the database.
Step 2 – Creating a Database and Database User
note
Remember to end all commands at an SQL prompt with a semicolon.
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 3/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Next, you will create a database user which you will use to connect to and interact with
the database. Set the password to something strong and secure:
postgres=# CREATE USER myprojectuser WITH PASSWORD ' password '; Copy
Afterwards, you will modify a few of the connection parameters for the user you just
created. This will speed up database operations so that the correct values do not have
to be queried and set each time a connection is established.
postgres=# ALTER ROLE myprojectuser SET client_encoding TO 'utf8'; Copy
postgres=# ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read commi
postgres=# ALTER ROLE myprojectuser SET timezone TO 'UTC';
You are setting the default encoding to UTF-8, which Django expects. You are also
setting the default transaction isolation scheme to “read committed”, which blocks reads
from uncommitted transactions. Lastly, you are setting the timezone. By default, your
Django projects will be set to use UTC . These are all recommendations from the Django
project itself.
Now, all you need to do is give your database user access rights to the database you
created:
postgres=# GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser ; Copy
Exit the SQL prompt to get back to the postgres user’s shell session:
postgres=# \q Copy
Now that your database is set up, you can install Django. For better flexibility, you will
install Django and all of its dependencies within a Python virtual environment. The
virtualenv package allows you to create these environments easily.
$ cd ~/ myproject
Copy
You can create a virtual environment to store your Django project’s Python requirements
by typing:
$ python3 -m virtualenv myprojectenv Copy
This will install a local copy of Python and a local pip command into a directory called
myprojectenv within your project directory.
Before you install applications within the virtual environment, you need to activate it.
You can do so by typing:
$ source myprojectenv /bin/activate Copy
Your prompt will change to indicate that you are now operating within the virtual
environment. It will look something like this ( myprojectenv ) user @ host :~/ myproject $ .
Once your virtual environment is active, you can install the official release of Django with
pip . You will also install the psycopg2 package that will allow us to use the Postgres
database you configured:
Note
Regardless of which version of Python you are using, when the virtual environment is
activated, you should use the pip command (not pip3 ).
Now that you have a project, you need to configure it to use the database you created.
Open the main Django project settings file located within the child project directory:
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 5/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
. . .
This is currently configured to use SQLite as a database. You need to change this so
that your PostgreSQL database is used instead.
First, change the engine so that it uses the postgresql adaptor instead of the sqlite3
adaptor. For the NAME , use the name of your database ( myproject in this example). You
also need to add login credentials. You need the username, password, and host to
connect to. You will add and leave blank the port option so that the default is selected:
~/myproject/myproject/settings.py
. . .
DATABASES = {
'default': {
'ENGINE': 'django.db.backends. postgresql ',
'NAME': ' myproject ',
'USER': ' myprojectuser ',
'PASSWORD': ' password ',
'HOST': 'localhost',
'PORT': '',
}
}
. . .
While
[New] Buildyou are here, you AI/ML
production-ready will also need to adjust
applicati… the ALLOWED_HOSTS
We're hiring Blog Docs directive.
Get SupportThisContact
definesSales
a whitelist of addresses or domain names allowed to connect to the Django instance.
Any incoming requests with a Host header that is not in this list will raise an exception.
Django requires that you set this to prevent a certain class of security vulnerability.
Tutorials Questions Learning Paths For Businesses Product Docs Social Impact
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 6/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
In the snippet below, there are a few commented out examples used to demonstrate:
~/myproject/myproject/settings.py
. . .
# The simplest case: just add the domain name(s) and IP addresses of your Django serv
# ALLOWED_HOSTS = [ 'example.com', '203.0.113.5']
# To respond to 'example.com' and any subdomains, start the domain with a dot
# ALLOWED_HOSTS = ['.example.com', '203.0.113.5']
ALLOWED_HOSTS = [' your_server_domain_or_IP ']
In the square brackets, list the IP addresses or domain names that are associated with
your Django server. Each item should be listed in quotations with entries separated by a
comma. If you wish requests for an entire domain and any subdomains, prepend a
period to the beginning of the entry.
When you are finished, save and close the file.
Migrate the Database and Test your Project
Now that the Django settings are configured, you can migrate your data structures to
your database and test out the server.
You can begin by creating and applying migrations to your database. Since you don’t
have any actual data yet, this will simply set up the initial database structure:
(myprojectenv) $ cd ~/ myproject Copy
(myprojectenv) $ python manage.py makemigrations
(myprojectenv) $ python manage.py migrate
After creating the database structure, you can create an administrative account by
typing:
(myprojectenv) $ python manage.py createsuperuser Copy
You will be asked to select a username, provide an email address, and choose and
confirm a password for the account.
If you followed the initial server setup guide, you should have a UFW firewall in place.
Before you can access the Django development server to test your database, you need
to open the port in your firewall.
Allow external connections to the port by typing:
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 7/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Append /admin to the end of the URL and you should be able to access the login screen
to the admin interface:
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 8/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Enter the username and password you just created with the createsuperuser command.
You will then be taken to the admin interface:
When you’re done investigating, you can stop the development server by hitting CTRL-C
in your terminal window.
By accessing the admin interface, you have confirmed that you database has stored
your user account information and that it can be appropriately accessed.
Conclusion
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 9/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
In this guide, you have demonstrated how to install and configure PostgreSQL as the
backend database for a Django project. While SQLite can easily handle the load during
development and light production use, most projects benefit from implementing a more
full-featured database management system.
To take your project even further, see our guide on How To Set Up Django with
Postgres, Nginx, and Gunicorn on Ubuntu 20.04.
Thanks for learning with the DigitalOcean Community. Check out our offerings
for compute, storage, networking, and managed databases.
Learn more about us ->
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 10/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Comments
1 Comments
Leave a comment...
Click below to sign up and get $200 of credit to try our products over 60 days!
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 11/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Sign up
Popular Topics
Ubuntu
Linux Basics
JavaScript
Python
MySQL
Docker
Kubernetes
All tutorials ->
Congratulations on unlocking the whale ambience easter egg! Click the whale button
in the bottom left of your screen to toggle some ambient whale noises while you
read.
Thank you to the Glacier Bay National Park & Preserve and Merrick079 for the
sounds behind this easter egg.
Interested in whales, protecting them, and their connection to helping prevent
climate change? We recommend checking out the Whale and Dolphin Conservation.
Reset easter egg to be discovered again / Permanently dismiss and hide easter egg
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 12/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Become a
contributor
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 13/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Featured on Community
DigitalOcean Products
DigitalOcean makes it simple to launch in the cloud and scale up as you grow – whether
you’re running one virtual machine or ten thousand.
Learn more ->
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 14/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Enter your email to get $200 in credit for your first 60 days with DigitalOcean.
Email address
Send My Promo
New accounts only. By submitting your email you agree to our Privacy Policy.
Company
Products
Community
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 15/16
05-08-2023 11:42 How To Use PostgreSQL with your Django Application on Ubuntu 20.04 | DigitalOcean
Solutions
Contact
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-20-04 16/16