Django之ORM执行原生sql语句

Django之ORM执行原生sql语句

django中的ORM提供的操作功能有限,在模型提供的查询API不能满足实际工作需要时,可以在ORM中直接执行原生sql语句。

Django 提供两种方法使用原生SQL进行查询:一种是使用raw()方法,进行原生SQL查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的SQL语句。

raw()方法执行原生sql语句:

raw()方法执行原生sql(调用的类名不区分是谁,只要存在均可执行)

ret=models.Book.objects.raw(‘select *** from book’)

#ret=models.Publish.objects.raw(‘select from app01_book’)

for book in ret:

print(book.book_name)

print(book.dict)

直接执行自定义原生sql语句:

直接执行自定义原生sql(完全避开模型层,类似******pymysql******操作)
(1)----------------------------------------------------------------------------------------------
from django.db import connection

cursor=connection.cursor()

cursor.execute(‘select *** from book’)

ret=cursor.fetchall()

(2)-----------------------------------------------------------------------------------------------
python使用pymysql操作数据库,速度太慢,已解决
使用python的pymysql操作数据库使发现,网页的加载速度特别慢,正常加载时间应该是零点几秒,可是用pymysql加载的速度高至十几秒,开始分析时,认为是图片,js,css …内存过大,然后用了“图床”,等技术之后发现没有变化,之后使用了,“删代码排除法”,一点一点的排除,结果发现是操作数据库的方法有问题,通过几小时的查询,发现,python,目前版本,有几种中操作数据库的方法,小编一种一种的尝试发现只要一种之后发现一个结论,和网上说的一样:“在 Python 3.6 下,pymysql 是最慢的,mysqlclient 很快,但是 mysql-connector-python 更快,但是到了 Python 3.7,反而比 pymysql 还慢”,声明:小编使用的是python3.6版本。以下是使用:mysql-connector-python 的一些执行案例:增删改查。

import mysql.connector

config = {
‘host’:‘39.106.150.87’,
‘database’:‘schedule2’,
‘port’:3306,
‘user’:‘root’,
‘password’:‘’,
‘charset’:‘utf8’,
‘use_pure’:True,
‘raise_on_warnings’: True,
}

cnn = mysql.connector.connect(**config)
cursor = cnn.cursor()
sql = “select * from {} where date >= ‘{}’;”.format(table_name, tomorrow)
cursor.execute(sql)
result = cursor.fetchall()

mysql数据库表清空后id如何从1开始自增

环境:

​ 数据库:mysql

我们的数据库表中经常会使用id自增,但是每次清空表后id并不是从1开始计数,总是接着之前的进行自增,那么解决呢?

使用mysql的truncate命令,用法:truncate table 表名;

这样表的id自增就会变回从1开始自增了。

备注:该操作会清空您宝贵的数据库,我想题目已经说的够清楚了,请谨慎操作

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值