django配置连接数据库及原生sql语句的使用方法

作者:小短腿电工 时间:2024-01-19 19:22:56 

前言

本文主要给大家介绍了关于django配置连接数据库及原生sql语句的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

Django配置连接数据库:

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

示例代码如下:


DATABASES = {
'default': {
 # 数据库引擎(是mysql还是oracle等)
 'ENGINE': 'django.db.backends.mysql',
 # 数据库的名字
 'NAME': 'dfz',
 # 连接mysql数据库的用户名
 'USER': 'root',
 # 连接mysql数据库的密码
 'PASSWORD': 'root',
 # mysql数据库的主机地址
 'HOST': '127.0.0.1',
 # mysql数据库的端口号
 '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.jianshu.com/p/38017b4130a6

标签:django,数据库,sql语句
0
投稿

猜你喜欢

  • mysql-8.0.15-winx64 使用zip包进行安装及服务启动后立即关闭问题

    2024-01-23 05:58:37
  • django表单实现下拉框的示例讲解

    2022-03-24 09:18:25
  • Python的五个标准数据类型你认识几个

    2022-08-04 15:23:43
  • ASP也使用ORM,给ASP上所有的SQL注入画上句号

    2011-04-03 11:02:00
  • Pandas数据查询的集中实现方法

    2021-08-17 10:32:27
  • mybatis+mysql 使用存储过程生成流水号的实现代码

    2024-01-18 11:09:56
  • 在python中实现调用可执行文件.exe的3种方法

    2022-08-10 06:40:42
  • php封装的单文件(图片)上传类完整实例

    2024-05-03 15:50:18
  • python实现KNN近邻算法

    2022-08-13 08:24:58
  • Python 如何批量更新已安装的库

    2023-06-05 12:15:40
  • 纯ASP(VBscript)写的全球IP地址搜索程序

    2007-09-27 13:28:00
  • 实例讲解Python的函数闭包使用中应注意的问题

    2022-05-17 23:29:53
  • 细数nn.BCELoss与nn.CrossEntropyLoss的区别

    2021-04-16 16:29:28
  • python threading和multiprocessing模块基本用法实例分析

    2021-08-13 04:23:49
  • python实现简单温度转换的方法

    2021-04-12 10:14:51
  • Python检测一个对象是否为字符串类的方法

    2022-11-02 15:25:24
  • python urllib.request模块的使用详解

    2023-03-27 18:19:15
  • MySQL安装失败的原因及解决步骤

    2024-01-17 18:22:27
  • python实现单线程多任务非阻塞TCP服务端

    2021-05-29 07:26:52
  • 微信小程序实现星星评价效果

    2023-08-24 10:04:45
  • asp之家 网络编程 m.aspxhome.com