Django使用原生SQL操作数据库

  • A+
所属分类:ORM

Django配置连接数据库

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

DATABASES = {
    'default': {
        # 主数据库
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'XXX',
       'USER': 'XXX',
       'PASSWORD': 'XXX',
       'HOST': '172.16.200.105',
       'PORT': '3306',

        # 从数据库
        'ENGINE': 'django.db.backends.oracle',
        'NAME': '172.16.200.241:1521/XXX',
        'USER': 'XXX',
        'PASSWORD': 'XXX',
   }
}

在Django中操作数据库

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

# 使用Django封装好的connection对象,会自动读取setting.py中数据库的配置信息
from django.db import connection
       
# 获取游标对象
cursor = connection.cursor()
# 拿到游标对象后执行SQL语句
cursor.execute("select * from infor")
# 获取所有的数据
rows = cursor.fetchall()
print(rows)

以上的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 语句的数据。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: