django
orm
数据库
说明
Django 教程 正在计划编写中,欢迎大家加微信 gairuo123 提供意见、建议、纠错、催更。
本文的示例可以仅使用 Django 的 ORM,从而使用 Django 的强大功能,避免编写复杂的 SQL。
文件目录如下:
django-orm/
├── db/
│ ├── __init__.py
│ └── models.py
├── main.py
├── manage.py
├── README.md
└── settings.py
在本地计算机上为项目创建文件夹:
mkdir myproject
cd myproject
安装 Django、创建环境(略)。接下来同步数据库:
python manage.py makemigrations db
python manage.py migrate
运行项目:
python main.py
main.py
# Instatiate Django and import settings
import os
#mark django settings module as settings.py
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
#instantiate a web sv for django which is a wsgi
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
#import your models schema
from MyApp.models import Person
#Create Operations here
data_dict={'name':'Nimish','age':23,email:'nimishverma@ymail.com'}
person = Person(**data_dict)
person.save()
# Read operation logic
person = Person.objects.get()
print(f'Hello, I am {person.name}, {person.age} y/o. Reachable at {person.email}')
#Prints Hello, I am Nimish, 23 y/o. Reachable at nimishverma@ymail.com
manage.py
import os, sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
models.py
# MyApp/models.py
from django.db import models
class Person(models.Model):
name = models.TextField()
age = models.IntegerField(min_value=18, max_value=110)
email = models.EmailField()
settings.py
import os
# This defines the base dir for all relative imports for our project, put the file in your root folder so the
# base_dir points to the root folder
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# According to your data file, you can change the engine, like mysql, postgresql, mongodb etc make sure your data is
# directly placed in the same folder as this file, if it is not, please direct the 'NAME' field to its actual path.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
#Since we only have one app which we use
INSTALLED_APPS = (
'MyApp',
)
# Write a random secret key here
SECRET_KEY = '4e&6aw+(5&cg^_!05r(&7_#dghg_pdgopq(yk)xa^bog7j)^*j'