• django 的 ORM 单独使用 vkill'blog “技术本身没有太多价值,掌握了新的思考方式才是真的收获”


    django 的 ORM 单独使用 - vkill'blog - “技术本身没有太多价值,掌握了新的思考方式才是真的收获”

    django 的 ORM 单独使用

    08:28 , vkill
    到底啥时候使用呢,比如说我们开发网站时要写入基础数据这些的时候,用sql ? 太土了,还有关联表的数据sql可就麻烦了
    好了,上代码

    1、不依赖 django project 单独使用


    import os
    from django.conf import settings
    settings.configure(
        #DATABASE_ENGINE = 'sqlite3',
        #DATABASE_NAME= os.path.join( os.path.dirname(__file__), 'db\\sqlite3.db'),
        DATABASES = {
            'default': {
                'ENGINE': 'sqlite3',
                'NAME': os.path.join( os.path.dirname(__file__), 'db\\sqlite3.db'),
            }
        }
    )


    from django.db import models
    class Person(models.Model):
        class Meta:
            db_table = 'persons'
            app_label = 'test'

        created_at = models.DateTimeField('created_at', auto_now_add = True)
        updated_at = models.DateTimeField('updated_at', auto_now = True)
        name = models.CharField("name", max_length = 20)
        age = models.IntegerField("age")


    p = Person()
    p.name = "a"
    p.age = 111
    p.save()



    2、依赖django project ,其实就是使用了 django project 中的 settings 和 models,这个很像rails 中的seed,哈哈
    注意哈,下面代码中加 path 那段要理解下意思再加啊,不要乱加,我的seed.py位置在 #{django_project}/db/seed.py


    import os
    os.sys.path.append(os.path.join( os.path.dirname(__file__), '..')) #add project root directory to sys.path
    import settings as project_settings

    from django.conf import settings
    settings.configure(
        DATABASES = project_settings.DATABASES
    )

    from firstapp.models import *

    p = Person()
    p.name = "a"
    p.age = 111
    p.save()



    3、使用 manage.py db_seeds ,类似于 rails 中的 rake db:seed 那样,呵呵,这个和2差不多,只不过是用了 django 的manage.py 来执行,更django
    1)写 command文件,lib/django13/management/commands/db_seeds.py 文件内容如下,注意这里把 lib/django13 看成是 app ,像 django/contrib/auth 那样,management/commands 这个目录结构是死的,django从每个app的这个目录下下找 *.py ,文件名 db_seeds 就是 manage.py db_seeds 这里的


    from django.core.management.base import NoArgsCommand
    import settings
    import os

    class Command(NoArgsCommand):
        help = "exec db/seeds.py file for add master data."

        def handle_noargs(self, **options):
            for app in settings.INSTALLED_APPS:
                try:
                    exec("from %s.models import *" % app)
                except:
                    pass
            execfile(os.path.join(os.path.dirname(settings.__file__), 'db/seeds.py'))


    2)settings.py 中 INSTALLED_APPS 里启用 lib.django13 这个app
    INSTALLED_APPS = (
        'django.contrib.auth',
        ......
        'south',
        'lib.django13',
    )

    3)项目目录/db/seeds.py 内容如下


    print User.objects.all()


    Last modified by vkill on2011/05/27 11:03

  • 相关阅读:
    C# 图片存入SQL Server数据库
    C#如何将Build成功的程序集Copy到上一层目录
    JavaScript中JSON字符串和JSON对象相互转化
    如何将C#对象转化为JSON字符串
    SQL的常用语句
    NHibernate的使用
    如何配置Spring的XML文件及使用
    TRIGGER的使用(修改SP自动触发)
    iOS UIButton上下排列(上图下文)
    将.c .h文件打包成静态库 .a .so
  • 原文地址:https://www.cnblogs.com/lexus/p/2435647.html
Copyright © 2020-2023  润新知