Django连接MySQL数据库及原生SQL操作指南
本文详解Django连接MySQL数据库的配置方法,重点介绍如何通过Django封装的connection对象执行原生SQL语句。内容涵盖settings.py配置、cursor游标常用接口(execute、fetchall等)及Python DB API规范,提供完整代码示例,帮助开发者掌握底层数据库操作技巧。
Django连接MySQL数据库及原生SQL操作指南
前言
本文主要介绍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还是mysqdb,其接口保持一致。更多规范详情可参考: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语句。若执行时需传递参数,可通过parameters参数传入。示例代码如下:
cursor.execute("select * from article where id=%s",(1,))
5、fetchone:在执行查询操作后,用于获取第一条数据。
6、fetchmany(size):在执行查询操作后,用于获取多条数据。具体数量取决于传入的size参数。若未传入size参数,默认获取第一条数据。
7、fetchall:用于获取所有满足SQL语句的数据。
总结
以上就是本文的全部内容,希望本文的内容对大家的学习或工作具有一定的参考学习价值。如有疑问,欢迎留言交流,感谢大家对本站的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













