Python Django 连接 PostgreSQL 操作实例

更多Python学习内容:ipengtao.com

大家好,我是彭涛,今天为大家分享 Python Django 连接 PostgreSQL 操作实例,全文3500字,阅读大约10分钟

在Web开发中,使用Django连接到PostgreSQL数据库是一种常见的选择。本文将详细介绍如何在Django项目中连接到PostgreSQL数据库,并提供丰富的示例代码。

安装必要的库

首先,确保已经安装了Django和psycopg2库,它是Django连接PostgreSQL所需的驱动。

go 复制代码
pip install Django psycopg2

配置数据库连接

在Django项目的settings.py文件中,配置数据库连接信息,将ENGINE设置为django.db.backends.postgresql, 并填写NAME, USER, PASSWORD, HOSTPORT等信息。

go 复制代码
# settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'your_database_name',
        'USER': 'your_database_user',
        'PASSWORD': 'your_database_password',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

创建并应用迁移

运行以下命令,创建数据库迁移并应用。

go 复制代码
python manage.py makemigrations
python manage.py migrate

定义模型

创建一个简单的模型,以演示数据库操作。

go 复制代码
# models.py

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)

    def __str__(self):
        return self.title

进行数据库操作

在Django shell中,演示如何进行数据库操作。

go 复制代码
python manage.py shell
go 复制代码
# 在Django shell中

# 导入模型
from your_app.models import Book

# 创建新书
new_book = Book(title='Django Essentials', author='John Doe')
new_book.save()

# 查询所有书籍
all_books = Book.objects.all()
print(all_books)

Django视图和模板

在Django项目中创建视图和模板,以展示从数据库中检索数据的方式。

go 复制代码
# views.py

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()
    return render(request, 'book_list.html', {'books': books})
go 复制代码
<!-- book_list.html -->

{% extends 'base.html' %}

{% block content %}
  <h2>Book List</h2>
  <ul>
    {% for book in books %}
      <li>{{ book.title }} by {{ book.author }}</li>
    {% endfor %}
  </ul>
{% endblock %}

运行Django服务器

最后,运行Django开发服务器并查看连接到PostgreSQL的Web页面。

go 复制代码
python manage.py runserver

访问http://127.0.0.1:8000/,查看包含数据库中书籍信息的页面。

数据库迁移和更改模型

在实际开发中,可能需要对模型进行更改。演示如何通过数据库迁移来处理模型变更。

go 复制代码
# models.py

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    published_date = models.DateField()

    def __str__(self):
        return self.title

运行以下命令进行迁移:

go 复制代码
python manage.py makemigrations
python manage.py migrate

Django管理后台

使用Django自带的管理后台,轻松管理数据库记录。

go 复制代码
# admin.py

from django.contrib import admin
from .models import Book

admin.site.register(Book)

运行服务器,访问http://127.0.0.1:8000/admin/,使用创建的超级用户账号登录,即可管理数据库中的书籍记录。

Django表单和视图

展示如何使用Django表单和视图来实现用户添加书籍的功能。

go 复制代码
# forms.py

from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ['title', 'author', 'published_date']
go 复制代码
# views.py

from django.shortcuts import render, redirect
from .models import Book
from .forms import BookForm

def add_book(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('book_list')
    else:
        form = BookForm()
    return render(request, 'add_book.html', {'form': form})
go 复制代码
<!-- add_book.html -->

{% extends 'base.html' %}

{% block content %}
  <h2>Add Book</h2>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Add Book</button>
  </form>
{% endblock %}

urls.py中添加新的URL模式,使用户能够访问添加书籍的页面。

go 复制代码
# urls.py

from django.urls import path
from .views import book_list, add_book

urlpatterns = [
    path('books/', book_list, name='book_list'),
    path('add_book/', add_book, name='add_book'),
]

总结

在本文中,深入研究了如何在Django项目中连接到PostgreSQL数据库,并提供了详尽的示例代码,覆盖了从配置数据库连接到实现基本的Web应用功能的全过程。首先,介绍了安装必要的库,包括Django和psycopg2,并详细说明了在settings.py中配置数据库连接的步骤。

接着,创建了一个简单的模型,展示了如何使用Django的迁移系统来初始化和更新数据库结构。通过在Django shell中演示数据库操作,大家可以清晰了解如何进行常见的增删改查操作。还深入探讨了Django的视图、模板和管理后台的使用,演示了如何以用户友好的方式展示和管理数据库中的数据。此外,引入了Django表单和视图的概念,展示了如何通过表单让用户添加新的数据库记录。

总体而言,本文提供了一个全面而详实的教程,适用于初学者和有一定经验的开发者。通过这些示例,大家将获得在Django中连接和操作PostgreSQL数据库的实际经验,为构建功能齐全的Web应用奠定了坚实的基础。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

点击"阅读原文",获取更多学习内容

相关推荐
qq_46097840几秒前
如何在 PHP 包含文件中动态排除当前页面的导航项
jvm·数据库·python
编码者卢布2 分钟前
【App Service】查看Application Insights自身SDK日志的方法示例
后端·python·flask
一朵缥缈的向日葵.2 分钟前
[特殊字符] Mojo 语言:为 AI 硬件而生的“Python 升级版” —— 完整指南
人工智能·python·mojo
wolfengi2 分钟前
python之使用docxtpl渲染word模板
数据库·python·word
2401_831419443 分钟前
Layui如何实现表格内部的图片点击后进入相册轮播模式
jvm·数据库·python
Jetev6 分钟前
SQL使用JOIN连接更新目标表数据_UPDATE语句结合JOIN语法实现
jvm·数据库·python
2401_8323655210 分钟前
如何用最快速度完成Navicat的Linux系统完美安装配置_傻瓜式操作步骤
jvm·数据库·python
财经资讯数据_灵砚智能11 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月29日
大数据·人工智能·python·信息可视化·自然语言处理
Java&Develop13 分钟前
dbeaver 如何添加 比如 我输入 sf 回车 编辑器会出现 sql select * from 的快捷
数据库·sql·编辑器
SilentSamsara15 分钟前
Python 内存管理:引用计数、循环垃圾回收与内存泄漏排查
开发语言·vscode·python·青少年编程·pycharm