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):
        sql ="SELECT TOP 100 * FROM EwData"
        conn = connections[‘MyDB‘]          #連接的數據庫
        cur = conn.cursor()                  #連接游標
        cur.execute(sql)                    #執行SQL語名
        data = dictfetchall(cur)               #把結果用字典返回
        return render(request, ‘ewdata.html‘, {‘ew‘: data,‘fcol‘:data[0]})

html代码:

<table class="gridtable">
            <tr>
               {% for k in fcol %}
                    <th>{{ k }}</th>
                {% endfor %}
            </tr>
                {% for i in ew %}
                    <tr>
                                        {#  根据SQL中的字段名显示数据 #}
                    <td>{{ i.McNo }}</td>
                    <td>{{ i.SN }}</td>
                    <td>{{ i.Model }}</td>
                    <td>{{ i.Block }}</td>
                    <td>{{ i.Floor }}</td>
                    <td>{{ i.Line }}</td>
                    <td>{{ i.Wight }}</td>
                    <td>{{ i.TestTime }}</td>
                    <td>{{ i.Abortive }}</td>
                    <td>{{ i.Checker }}</td>
                    <td>{{ i.Multiple }}</td>
                    <td>{{ i.PackSN }}</td>
                    </tr>
                {% endfor %}
        </table>

原文地址:https://blog.51cto.com/alun51cto/2437342

时间: 2024-07-31 09:19:27

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

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

在Hibernate中使用原生SQL语句

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

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', }, } } 可以

django 使用原生SQL语句反向生成MODELS.PY中的表结构

在一次工作中,有这么一个问题,就是要导入的数据字段不确定,但是还想使用django的ORM来对数据进行操作.. 琢磨了许久,弄个不完善的方案,但功能是能实现的,主要是思路.废话不多说了,丑陋的展示一下吧... from django.db import connection #粗陋的用数组和字符串表示一下要导入的数据表单项lis = ['ll', 'bb', 'yy'] #表示要建立的表单字段l = 'tablename' #表名ll = 'fff' new_table = connection

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

entityframework学习笔记--009-使用原生sql语句操作数据

1 使用原生SQL语句更新--Database.ExecuteSqlCommand 假设你有一张如图9-1所示的Payment数据库表. 图9-1 1.1 实体类型: 1 public class Payment 2 { 3 public int PaymentId { get; set; } 4 public decimal Amount { get; set; } 5 6 public string Vendor { get; set; } 7 } 1.2 数据访问类: 1 public c

【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

机房收费系统中遇到的SQL语句问题

个人版机房收费系统正在进行中,遇到了几个有关SQL语句的问题. 1.sum函数的使用: 在结账部分,要求出某个表中某一列的和.在第一次机房系统中,我不知道sum函数的存在,很傻很天真地用循环一个一个往上加.下面以求所有卡中余额的和来说说sum函数怎么使,SQL语句为:select sum(cash)from T_Card.这个格式不是固定的,可以根据需求更改,比如求多列的和:select sum(列名1),sum(列名2)...from [表名] where....查询出来的结果只有一行,如果只