python之路_django ORM相关补充

一、非django项目文件执行ORM

  在不启动django项目的情况下,我们是否可以进行ORM操作呢?当然不行。因为所有的ORM操作都必须是要连接数据库的。但是我们有这样的一个需求:想在一个文件中执行ORM。该如何实现呢?参考如下实例:

import os
import sys
import django
sys.path.append(r‘C:\Users\Administrator\PycharmProjects\s6day109‘)    #将当前djang项目路径添加到环境

os.chdir(r‘C:\Users\Administrator\PycharmProjects\s6day109‘)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "s6day109.settings")
django.setup()                                                         #启动django

from crm import models

v = models.Customer.objects.all()
print(v)

二、django中ORM的Q介绍

  Q方法主要为了解决复杂条件查询的情况。

方式一:

Q(nid__gt=10)                                            #nid>10
Q(nid=8) | Q(nid__gt=10)                                 #nid=8或者nid>10
Q(nid=8) | Q(nid__gt=10) &Q(caption="root")              #nid=8或者nid>10且caption="root"

# 应用示例:(非Q条件放在Q条件后面,为且的关系。如status=2)
customer_list = models.Customer.objects.filter(Q(recv_date__lt=)|Q(last_consult_date__lt=no_follow),status=2)

方式二:

q1=Q()
q1.connector = "OR"
q1.children.append((‘id‘,1))
q1.children.append((‘id__gt‘,3))
#q1中要求id=1或者id>3,例:models.UserInfo.objects.filter(q1)

q2=Q()
q2.connector = "OR"
q2.children.append((‘title__contain‘,"高"))
q2.children.append((‘nid‘,2))
#q2中要求title字段包含“高”或者nid=2,例:models.UserInfo.objects.filter(q2)

con=Q()
con.add(q1,"AND")
con.add(q2,"AND")
#con要求q1和q2的结果为且的关系,例:models.UserInfo.objects.filter(con)

原文地址:https://www.cnblogs.com/seven-007/p/8534598.html

时间: 2024-11-09 10:24:37

python之路_django ORM相关补充的相关文章

python之路 -- 爬虫 -- 高性能相关

高性能爬虫方案: 多进程 多线程 利用"异步非阻塞"模块实现单线程并发请求. 本质 1 sk = socket() 2 # 阻塞 3 sk.connect(('www.cnblogs.com',80)) 4 5 sk.sendall(b"GET /wupeiqi http1.1\r\n.....\r\n\r\n") 6 sk.sendall(b"POST /wupeiqi http1.1\r\n.....\r\n\r\nuser=alex&pwd=

python 之路 13 ORM SQLAlchemy

1. 安装 # pip install sqlalchemy# pip install pymysql 2. 创建引擎 >>> from sqlalchemy import create_engine>>> engine = create_engine('mysql+pymysql://USERNAME:[email protected]_HOST:DB_PORT/DB_NAME', pool_recycle=3600)pool_recycle 指定连接池收回时间. 引

Python之路-字符编码&数据类型补充(待更新)

作业 三级菜单程序 history =[menu] while True: for item in history[-1]: print(item) choice = input("input your choice :").strip() if choice == 'b' and len(history) > 1: history.pop() elif choice == 'q': break else: if choice in history[-1]: history.ap

Python之路【第五篇】:面向对象和相关

Python之路[第五篇]:面向对象及相关 面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 1 2 3 4 5 6 class Foo(object):     pass obj = Foo() isinstance(obj, Foo) 二.issubclass(sub, super) 检查sub类是否是 super 类的派生类 1 2 3 4 5 6 7 class F

Python之路【第十七篇】:Django【进阶篇 】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc

Python之路【第十六篇】:Django【基础篇】

Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver

Python之路【第十七篇】:Django之【进阶篇】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')

Python之路【第十七篇】:Django【进阶篇】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')