orm介绍
-
对象关系映射(Object Relational Mapping),它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将这些对象组织起来,实现系统业务逻辑的过程。
-
在ORM过程中最重要的概念是映射(Mapping),通过这种映射可以使业务对象与数据库分离。从面向对象来说,数据库不应该和业务逻辑绑定到一起,ORM则起到这样的分离作用,使数据库层透明,开发人员真正的面向对象。
总而言之,就是在pyton–django项目下面的app里面的models,把其中的面向对象的代码转换成数据表并添加进去。
一、在app01/models.py中写下逻辑代码
from django.db import models
# Create your models here.
class Account(models.Model):
name = models.CharField(max_length=10)
bday = models.DateField()
checked = models.BooleanField()
当然,光这样写不行,需要在settings.py中配置数据库
二、在配置中找到以下代码
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
这个连接的是pycharm中默认的sqlite3数据库,这儿做的是把它注释掉,换成下面的mysql配置文件,修改一下汉字
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名',
'USER': '账号',
'PASSWORD': '密码',
'HOST': '地址',
'PORT': '端口',
}
}
三、用pymysql模块代替mysqldb模块
如果出现以上错误,需要在项目名下面的__init__.py中写入以下代码:
import pymysql
pymysql.install_as_MySQLdb()
通过pymysql代替MySQLdb模块
四、同步数据库
首先要保证你的数据库库名存在于mysql中
生成同步文件
python manage.py makemigrations
出现以下代码代表生成同步文件成功
E:\django-learn\my_site>python manage.py makemigrations
Migrations for 'app01':
app01\migrations\0001_initial.py
- Create model aCCount
同步到数据
python manage.py migrate
E:\django-learn\my_site>python manage.py migrate
System check identified some issues:
WARNINGS:
?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangop
roject.com/en/1.11/ref/databases/#mysql-sql-mode
Operations to perform:
Apply all migrations: admin, app01, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying app01.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK
如果出现以下问题:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3 点击这里
如果上面一切ok,现在就可以去数据库里看看是否有这张表
mysql> show tables;
+----------------------------+
| Tables_in_manager_db1 |
+----------------------------+
| app01_account |
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+----------------------------+
11 rows in set (0.00 sec)
上面的app01_account代表着表已经创建好,之所以这么多,是因为django中的settings.py中设置了一些路径
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
以上就是django创建数据库的内容了,更详细的博客可以点击这里