django+python+orm连接Mysql数据库

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创建数据库的内容了,更详细的博客可以点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值