Django使用原生SQL语句操做数据库python
Django配置链接数据库:
在操做数据库以前,首先先要链接数据库。这里咱们以配置 MySQL 为例来说解。 Django 链接数据库,不须要单独的建立一个链接对象。只须要在 settings.py 文件中作好数据库相关的配置就能够了。示例代码以下:mysql
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 封装好的接口就能够操做了。示例代码以下:sql
# 使用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对象经常使用接口:
一、description :若是 cursor 执行了查询的 sql 代码。那么读取 cursor.description 属性的时候,将返回一个列表,这个列表中装的是元组,元组中装的分别是 (name,type_code,display_size,internal_size,precision,scale,null_ok) ,其中 name 表明的是查找出来的数据的字段名称,其余参数暂时用处不大。
二、rowcount :表明的是在执行了 sql 语句后受影响的行数。
三、close :关闭游标。关闭游标之后就不再能使用了,不然会抛出异常。
四、execute(sql[,parameters]) :执行某个 sql 语句。若是在执行 sql 语句的时候还须要传递参数,那么能够传给 parameters 参数。示例代码以下:django
cursor.execute("select * from article where id=%s",(1,))
五、fetchone :在执行了查询操做之后,获取第一条数据。api
六、fetchmany(size) :在执行查询操做之后,获取多条数据。具体是多少条要看传的 size 参数。若是不传 size 参数,那么默认是获取第一条数据。
七、fetchall :获取全部知足 sql 语句的数据。fetch