zoukankan      html  css  js  c++  java
  • Django 04. django框架模型之生成数据表


    简介
     
          django 使用关系对象映射(Object Relational Mapping,简称ORM),遵循Code Frist 的原则,可以根据代码中定义的类来自动生成数据库表,
    使开发者专注与代码开发,而不再关注数据库表设计。
          django默认支持sqlite3、mysql、oracle、postgresql数据库、像其他db2和sqlserver之类的数据库需要第三方的支持。

    1. 安装mysql 启动 MySQL-python

    安装MySQL_python-1.2.5-cp27-none-win_amd64.whl

    2. pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl

    3. pip freeze 查看

    2. Settings.py 配置数据库及生成数据库表
     
        1) 数据库引擎:
     
            'django.db.backends.postgresql'
    'django.db.backends.mysql'
    'django.db.backends.sqlite3'
    'django.db.backends.oracle'
     
       2) 默认的是sqlite3 
     
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
     

        3) mysql 的配置

     

           

    DATABASES = {


                'default': {

              'ENGINE': 'django.db.backends.mysql',
              'NAME': 'web_django',
              'USER': 'root',
              'PASSWORD': 'root',
              'HOST': '127.0.0.1', # Set to empty string for localhost. Not used with sqlite3.
              'PORT': '3306', # Set to empty string for default 3306. Not used with sqlite3.

                   }

          }
     
       4) 创建数据库
     
        sqlite3 不需要手动去创建数据库,其他数据库需要手动创建。    
        使用Navicat for Mysql 创建Mysql数据库方法如下
     
            
     
       5) 测试配置是否正确
     
         使用python manage.py shell 测试是否连接成功,如不报错说明连接成功。
             F:workSpacePythonpythonDemositename>python manage.py shell
    Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> from django.db import connection
    >>> connection.cursor()
    <django.db.backends.utils.CursorDebugWrapper object at 0x0000000003C508D0>
     
            
     
       6) 把app 注册到settings.py 中的"INSTALLED_APPS"中
     
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',    
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'web',
       ]

    3.  在app的models.py文件中创建models子类


    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    from django.db import models
     
    class UserInfo(models.Model):
        userName = models.CharField(max_length=50)
        passWord = models.CharField(max_length=50)

    4.  执行下列命令生成数据库表
     
    python manage.py makemigratioins
    python manage,py migrate
     
                    

    5.  数据库表更新
            如表格中增加用户创建时间。
            
            models.py
             # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    from django.db import models
     
    class UserInfo(models.Model):
        userName = models.CharField(max_length=50)
        passWord = models.CharField(max_length=50)
        createDate = models.DateField()
     
    执行: python manage.py makemigratioins
    并输入:1
    输入:timezone.now
    执行:python manage.py migrate
     
     

     


     
  • 相关阅读:
    IOS第一天
    Mac环境下svn的使用
    惯用代码
    ORA-12170: TNS: 连接超时
    java字符集
    java移位运算
    mysql面试题
    mysql覆盖索引(屌的狠,提高速度)
    Cannot call sendError() after the response has been committed
    maven生命周期
  • 原文地址:https://www.cnblogs.com/PythonHomePage/p/7634383.html
Copyright © 2011-2022 走看看