django中使用原生sql

在Django中使用原生Sql主要有以下几种方式:

一:extra:结果集修改器,一种提供额外查询参数的机制

二:raw:执行原始sql并返回模型实例

三:直接执行自定义Sql

(

这种方式完全不依赖model,前两种还是要依赖于model

)

实例:

使用extra:

1:Book.objects.filter(publisher__name=‘广东人员出版社‘).extra(where=[‘price>50‘])

Book.objects.filter(publisher__name=‘广东人员出版社‘,price__gt=50)

2:Book.objects.extra(select={‘count‘:‘select count(*) from hello_Book‘})

使用raw:

Book.objects.raw(‘select * from hello_Book‘)

自定义sql:

Book.objects.raw("insert into hello_author(name) values(‘测试‘)")

rawQuerySet为惰性查询,只有在使用时生会真正执行

执行自定义sql:

from django.db import connection

cursor=connection.cursor()

#插入操作

cursor.execute("insert into hello_author(name) values(‘郭敬明‘)")

#更新操作

cursor.execute(‘update hello_author set name=‘abc‘ where name=‘bcd‘‘)

#删除操作

cursor.execute(‘delete from hello_author where name=‘abc‘‘)

#查询操作

cursor.execute(‘select * from hello_author‘)

raw=cursor.fetchone() #返回结果行游标直读向前,读取一条

cursor.fetchall() #读取所有

时间: 2024-10-12 09:36:47

django中使用原生sql的相关文章

在Django中使用原生Sql

在Django中使用原生Sql主要有以下几种方式: 一:extra:结果集修改器,一种提供额外查询参数的机制 二:raw:执行原始sql并返回模型实例 三:直接执行自定义Sql(这种方式完全不依赖model,前两种还是要依赖于model) 实例: 使用extra: 1:Book.objects.filter(publisher__name='广东人员出版社').extra(where=['price>50']) Book.objects.filter(publisher__name='广东人员出

django中使用原生SQL语句

views中代码: # 有多个数据库时 from django.db import connections # 傳入游标,得到字典結果集 def dictfetchall(cursor): "将游标返回的结果保存到一个字典对象中" desc = cursor.description return [ dict(zip([col[0] for col in desc], row)) for row in cursor.fetchall() ] def seldata(request):

python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_demo.settings") import django django.setup() # 启动Django项目 from app01 import models #返回QuerySet对象的方法: r

在Hibernate中使用原生SQL语句

使用原生SQL查询必须注意:程序必须选出所有的数据列才可被转换成持久化实体.假设实体在映射时有一个<many-to-one../>的关联指向另外一个实体,则SQL查询中必须返回该<many-to-one../>映射的外键列,否则将导致抛出"column not found"异常.最简单的做法是,在SQL字符串中使用星(*)来表示返回所有列.    在原生SQL语句中一样支持使用参数,这些参数即可使用问号参数(?),也可使用名字参数. 示例1:名字参数public

EF中执行原生sql与使用Local获取本地数据

使用DbSet的Local属性可以访问当前context中被追踪且没有被标记为删除的实体(内存中的数据) 1 using (var context = new BloggingContext()) 2 { 3 // Load all blogs from the database into the context 4 context.Blogs.Load(); 5 6 // Add a new blog to the context 7 context.Blogs.Add(new Blog {

【Django】执行原生SQL的三种方法 &#632542;

原文: http://blog.gqylpy.com/gqy/383 "> 如下三种方式 extra:结果集修改器,一种提供额外查询参数的机制 raw:执行原始SQL返回模型实例 connection/connections:直接执行自定义SQL(此方法不依赖model) 1.extra示例: # extra # 在QuerySet的基础上继续执行子语句 # extra(self, select=None, where=None, params=None, tables=None, ord

django中使用原生的sql查询实例

在app文件夹下创建database_operations.py文件,写如下内容: import pymysql from 项目名.settings import DATABASES class Database_operat(object): def __init__(self, database=DATABASES, database_name='default'): database_information = database[database_name] try: self.db =

CI中写原生SQL(封装查询)

封装查询 封装,通过让系统为你组装各个查询语句,能够简化你的查询语法.参加下面的范例: $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(3, 'live', 'Rick')); 查询语句中的问号会自动被查询函数中位于第二个参数位置的数组中的值所替代. 使用封装查询的第二个好处是所有的值都会被自动转义,形成了较为

Django设置查看原生SQL语句

LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } } 可以