• 售前

  • 售后

热门帖子
入门百科

django中使用原生sql语句的方法步调

[复制链接]
wb47 显示全部楼层 发表于 2021-10-26 13:06:29 |阅读模式 打印 上一主题 下一主题
raw

  1. # row方法:(掺杂着原生sql和orm来执行的操作)
  2. res = CookBook.objects.raw('select id as nid from epos_cookbook where id>%s', params=[1, ])
  3. print(res.columns) # ['nid']
  4. print(type(res)) # <class 'django.db.models.query.RawQuerySet'>
  5. # 在select里面查询到的数据orm里面的要一一对应
  6. res = CookBook.objects.raw("select * from epos_cookbook")
  7. print(res)
  8. for i in res:
  9.   print(i.create_date)
  10.   print(i)
  11.   
  12. res = CookBook.objects.raw('select * from epos_cookbook where id>%s', params=[1, ])
  13. # 后面可以加参数进来
  14. print(res)
  15. for i in res:
  16.   # print(i.create_date)
  17.   print(i)
复制代码
extra

  1. ## select提供简单数据
  2. # SELECT age, (age > 18) as is_adult FROM myapp_person;
  3. Person.objects.all().extra(select={'is_adult': "age > 18"}) # 加在select后面
  4. ## where提供查询条件
  5. # SELECT * FROM myapp_person WHERE first||last ILIKE 'jeffrey%';
  6. Person.objects.all().extra(where=["first||last ILIKE 'jeffrey%'"]) # 加一个where条件
  7. ## table连接其它表
  8. # SELECT * FROM myapp_book, myapp_person WHERE last = author_last
  9. Book.objects.all().extra(table=['myapp_person'], where=['last = author_last']) # 加from后面
  10. ## params添参数
  11. # !! 错误的方式 !!
  12. first_name = 'Joe' # 如果first_name中有SQL特定字符就会出现漏洞
  13. Person.objects.all().extra(where=["first = '%s'" % first_name])
  14. # 正确方式
  15. Person.objects.all().extra(where=["first = '%s'"], params=[first_name])
复制代码
connection(类似pymysql)

  1. from django.db import connection
  2. cursor=connection.cursor()
  3. # 如果需要配置数据库
  4. # cursor=connection['default'].cursor()
  5. cursor.execute('select * from app01_book')
  6. ret=cursor.fetchall()
  7. print(ret)
  8. #((2, '小时光', Decimal('10.00'), 2), (3, '未来可期', Decimal('33.00'), 1), (4, '打破思维里的墙', Decimal('11.00'), 2), (5, '时光不散', Decimal('11.00'), 3))
复制代码
留意:如果在sql语句中有用到除法(%),需要使用%%来转义,由于在str中%多用于格式化输出。

到此这篇关于django中使用原生sql语句的方法步调的文章就先容到这了,更多相干django使用原生sql语句内容请搜索脚本之家从前的文章或继续欣赏下面的相干文章希望大家以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作