043:Django使用原生SQL语句操作数据库

Django使用原生SQL语句操作数据库

Django配置连接数据库:

  在操作数据库之前,首先先要连接数据库。这里我们以配置 MySQL 为例来讲解。 Django 连接数据库,不需要单独的创建一个连接对象。只需要在 settings.py 文件中做好数据库相关的配置就可以了。示例代码如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'iotservice',
        'USER': 'root',
        'PASSWORD': 'uS$&e23klg1n',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}
在Django中操作数据库:

  在 Django 中操作数据库有两种方式。第一种方式就是使用原生 sql 语句操作,第二种就是使用 ORM 模型来操作。这节课首先来讲下第一种。在 Django 中使用原生 sql 语句操作其实就是使用 python db api 的接口来操作。如果你的 mysql 驱动使用的是 pymysql ,那么你就是使用 pymysql 来操作的,只不过 Django 将数据库连接的这一部分封装好了,我们只要在 settings.py 中配置好了数据库连接信息后直接使用 Django 封装好的接口就可以操作了。示例代码如下:

# 使用django封装好的connection对象,会自动读取settings.py中数据库的配置信息
from django.db import connection
# 获取游标对象
cursor = connection.cursor()
# 拿到游标对象后执行sql语句
cursor.execute("select * from book")
# 获取所有的数据
rows = cursor.fetchall()
# 遍历查询到的数据
for row in rows:
  print(row)

  以上的 execute 以及 fetchall 方法都是 Python DB API 规范中定义好的。任何使用 Python 来操作 MySQL 的驱动程序都应该遵循这个规范。所以不管是使用 pymysql 或者是 mysqlclient 或者是 mysqldb ,他们的接口都是一样的。更多规范请参考:https://www.python.org/dev/peps/pep-0249/。

Python DB API下规范下cursor对象常用接口:

1、description :如果 cursor 执行了查询的 sql 代码。那么读取 cursor.description 属性的时候,将返回一个列表,这个列表中装的是元组,元组中装的分别是 (name,type_code,display_size,internal_size,precision,scale,null_ok) ,其中 name 代表的是查找出来的数据的字段名称,其他参数暂时用处不大。
2、rowcount :代表的是在执行了 sql 语句后受影响的行数。
3、close :关闭游标。关闭游标以后就再也不能使用了,否则会抛出异常。
4、execute(sql[,parameters]) :执行某个 sql 语句。如果在执行 sql 语句的时候还需要传递参数,那么可以传给 parameters 参数。示例代码如下:

cursor.execute("select * from article where id=%s",(1,))

5、fetchone :在执行了查询操作以后,获取第一条数据。

6、fetchmany(size) :在执行查询操作以后,获取多条数据。具体是多少条要看传的 size 参数。如果不传 size 参数,那么默认是获取第一条数据。
7、fetchall :获取所有满足 sql 语句的数据。

工程实例代码截图:

 

转载于:https://www.cnblogs.com/zheng-weimin/p/10200177.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤实现在 Django使用原生 SQL 语句和 Layui 导出数据: 1. 编写原生 SQL 语句,查询需要导出的数据。 2. 在 Django 中执行 SQL 语句,获取查询结果。 ```python from django.db import connection with connection.cursor() as cursor: cursor.execute("SELECT * FROM myapp_mymodel") results = cursor.fetchall() ``` 3. 将查询结果转换为需要导出的数据格式,例如 CSV。 ```python import csv response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="export.csv"' writer = csv.writer(response) for row in results: writer.writerow(row) return response ``` 4. 在前端页面中使用 Layui 提供的数据表格组件实现导出功能。 ```javascript <table class="layui-table"> <thead> <tr> <th>列1</th> <th>列2</th> <th>列3</th> </tr> </thead> <tbody> {% for row in results %} <tr> <td>{{ row.0 }}</td> <td>{{ row.1 }}</td> <td>{{ row.2 }}</td> </tr> {% endfor %} </tbody> </table> <button class="layui-btn" onclick="exportData()">导出数据</button> <script> function exportData() { window.location.href = "{% url 'export_data' %}"; } </script> ``` 在点击“导出数据”按钮时,将发送一个 GET 请求到 Django 后端的导出数据视图函数,在该函数中执行 SQL 查询并将查询结果转换为 CSV 格式,然后通过 HTTP 响应返回给前端页面,实现文件下载的功能。 以上是一个简单的示例,你可以根据实际需求和业务逻辑进行相应的修改和拓展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值