django怎么执行sql语句

2020-06-04 21:37

Django运行SQL语句

方法/步骤11,经理。原始(原始查询,参数=无,翻译=无)

>。>。>。对于个人对象中的p,原始(& # 39;从myapp_person中选择* & 39;):

...打印(p)

约翰·史密斯

简·琼斯

这个方法接受一个原始的SQL查询,执行它,并返回一个django . db . models . query RawQuerySet实例。这个RawQuerySet实例可以像普通的QuerySet一样被遍历,以提供一个对象实例。

2(1)场匹配

>。>。>。原始(& # 39;& # 39;& # 39;选择第一个作为名字,

...姓氏作为姓氏,

...出生日期,

...主键身份标识,

...从某个_其他_表& # 39;& # 39;& # 39;)

>。>。>。name _ map = { & # 39第一& # 39;:& # 39;名字& # 39;,& # 39;最后一个& # 39;:& # 39;姓氏& # 39;,& # 39;bd & # 39:& # 39;出生日期& # 39;,& # 39;pk & # 39:& # 39;id & # 39}

>。>。>。原始(& # 39;从其他表格中选择。,翻译=name_map)

3(2)即使没有显示指示查询的字段,也可以获得该字段

>。>。>。对于个人对象中的p,原始(& # 39;选择id,名字来自myapp _ person & # 39):

...打印(p.first_name,#这将由原始查询检索

...p.last_name) #这将按需检索

...

约翰·史密斯

简·琼斯

4(3)使用参数执行SQL

字符串占位符%s

字典的占位符

>。>。>。lname = & # 39Doe & # 39

>。>。>。原始(& # 39;选择*发件人姓名= % s & # 39,[·英纳姆)

5(4)严禁串接

>。>。>。查询= & # 39;选择*发件人姓名= % s & # 39% lname

>。>。>。Person.objects.raw(查询)

6(5)参数不能用引号括起来

>。>。>。查询= & quot从我的联系人中选择*姓氏= & # 39;% s & # 39"

72.通过连接执行SQL。游标()

django.db.connection对象表示默认的数据库连接。若要使用数据库连接,请调用connection.cursor()来获取游标对象。然后调用游标. execute(sql,[参数)方法来执行sql

获取一个()或cursor.fetchone()以返回结果行。

从django.db导入连接

def my_custom_sql(自我):

将connection.cursor()作为光标:

光标。执行(& quot更新栏设置foo = 1,其中baz = %s"。,[自我介绍)

光标。执行(& quot从酒吧选择foo,其中baz = %s,[自我介绍)

row = cursor.fetchone()

返回行

8(1)通过百分比参数需要两个百分比符号

光标。执行(& quot在巴兹= & # 39;30% % & # 39;与id = % s & quot,[·赛尔夫)

9(2)光标执行不会返回列名

使用字典或命名元组

def dictfetchall(光标):

"将光标中的所有行作为字典返回

列=[列[0]用于光标中的列。描述]

返回[

dict(zip(列、行))

对于cursor.fetchall()中的行

]

从集合导入namedtuple

def namedtuplefetchall(光标):

"将光标中的所有行都作为名称返回

desc =光标。描述

nt _ result = named duple(& # 39;结果& # 39;,[上校[0]为desc上校)

为cursor.fetchall()中的行返回[nt _ result(*行)

>。>。>。光标。执行(& quot从测试限制2中选择id,父id);

>。>。>。dictfetchall(游标)

[{ & # 39;parent _ id & # 39:无,& # 39;id & # 39:54360982},{ & # 39;parent _ id & # 39:无,& # 39;id & # 39:54360880}]

目标

联系我们

天津市西青区中北镇云锦世家南门55号
4007181001
30998@qq.com

庆典活动

商务会议

企业年会

展会展览