zoukankan      html  css  js  c++  java
  • Django 快速项目搭建和常用的ORM语法

    logo

    安装Django并构建数据模型,使用orm

    1. virtualenv
      virtualenv venvname
      source venvname/bin/activate
      deactivate 退出虚拟环境

    2. pip install Django pip3 install Django
      python3 -m django --version
      django-admin startproject mysite
      python manage.py runserver
      python manage.py runserver 8080
      python manage.py startapp polls
      注意可能需要python -> python3执行
      python3 manage.py migrate ## 有很多自带的模型类如后台user,默认数据库sqlite

    3. 建表(写模型类迁移)

    • 使用已有数据库数据(需配置)
      一、配置Django你的数据库参数
      pip install pymysql
    import pymysql         # 一定要添加这两行!
    pymysql.install_as_MySQLdb()
    
    DATABASES = {
        'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'midatadb',
                'HOST':'192.168.1.100',
                'PORT':3306,
                'USER':'root',
                'PASSWORD':123456,
            }
    }
    
    参考:https://blog.csdn.net/itas109/article/details/80898943
    

    二、自动生成模型类
    python manage.py inspectdb 所有的数据表模型类, default 数据库的
    python manage.py inspectdb --database installment t_user
    evaluatedb.r_user_auth_pic_analysis_vn
    数据库名在settings.py
    注意切换到 虚拟环境执行 source venvxxx/bin/activate
    复制内容到models.py中,执行 python3 manage.py migrate

    1. python manage.py shell的使用(可以先装ipython)
      进入后就是ipython界面, 导入自己想要的模型类名即可执行orm

    补充:Django shell 使用 jupyter notebook

    • pip3 install django-extensions
    • 更改您的设置文件以包含'django-extensions'
      INSTALLED_APPS += ['django_extensions']
    • python3 manage.py shell_plus --notebook
    • 改变以适应,并在你的第一个细胞中运行(没有执行也没问题)
      import os, sys
      PWD = os.getenv('PWD')
      os.chdir(PWD)
      sys.path.insert(0, os.getenv('PWD'))
      os.environ.setdefault("DJANGO_SETTINGS_MODULE", "local_settings.py")
      import django
      django.setup()

    django shell jupyter

    打印出orm对应的sql语句

    在settings.py里,配置如下logging:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console':{
                'level':'DEBUG',
                'class':'logging.StreamHandler',
            },
        },
        'loggers': {
            'django.db.backends': {
                'handlers': ['console'],
                'propagate': True,
                'level':'DEBUG',
            },
        }
    }
    
    $ python manage.py shell
     
    In [1]: from test.models import A
     
    In [2]: A.objects.all()
    (0.001) SELECT "app1_a"."id", "app1_a"."name" FROM "app1_a" LIMIT 21; args=()
    [<A: A object>]
    

    在shell命令行的环境下,可以使用 django-exension’s shell_plus 命令并打开 --print-sql 选项。

    python manage.py shell_plus --print-sql
    https://blog.csdn.net/pushiqiang/article/details/79571169

    Django ORM实例

    select
    InstallmentUser.objects.filter(uid=uid).first()
    update
    Student.objects.get(name='Aaron').update(name='Zhang', age=20)
    Student.objects.filter(name='Aaron').update(name='Zhang', age=20)
    Student.objects.all().update(name='Zhang', age=20)
    insert
    RBlackList.objects.get_or_create(country_id=country_id, value=value)
    RBlackList.objects.update_or_create(country_id=country_id, value=value)

    delete
    Student.objects.all().delete()
    Student.objects.get(name='Aron').delete()
    Student.objects.filter(age=20).delete()

    python manage.py inspectdb --database midata r_nfis_record_time

    insert ignore
    insert ... on duplicate key update
    replace
    insert ignore into evaluatedb.r_user_auth_pic_analysis_vn (uid,application_id,ic_no,url,pair_uid,
    pair_ic_no,pair_url,status,create_time,update_time,source) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
    存在就不变,不存在就新建 相当于 ignore
    customer.source, _ = Source.objects.get_or_create(name="Website")

    存在就更新,不存在就新建,相当于 duplicate
    obj, created = Person.objects.update_or_create(
    first_name='John', last_name='Lennon',
    defaults={'first_name': 'Bob'},
    )

    1
    2
    3

  • 相关阅读:
    006 date find
    005 输出重定向 > >>命令 echo命令 tail命令
    总结,一周,
    mokey 学习
    树状,
    定制,
    萌芽,
    到底为什么,
    会,
    “恋爱”,一路走来,
  • 原文地址:https://www.cnblogs.com/bruspawn/p/10316914.html
Copyright © 2011-2022 走看看