Django-ORM操作数据库无数据问题

Posted syf-com

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-ORM操作数据库无数据问题相关的知识,希望对你有一定的参考价值。

Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架

 

到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞:

  • 创建数据库,设计表结构和字段
  • 使用 MySQLdb 来连接数据库,并编写数据访问层代码
  • 业务逻辑层去调用数据访问层执行数据库操作

 

ORM是什么?:(在django中,根据代码中的类自动生成数据库的表也叫--code first)

ORM:Object Relational Mapping(关系对象映射)

类名对应------》数据库中的表名

类属性对应---------》数据库里的字段

类实例对应---------》数据库表里的一行数据

obj.id  obj.name.....类实例对象的属性

 

Django orm的优势:

Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....,如果数据库迁移,只需要更换Django的数据库引擎即可;

使用Django的ORM详细步骤:

1. 自己动手创建数据库
create database 数据库名;
2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)
# 数据库相关的配置
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘, # 连接的数据库类型
‘HOST‘: ‘127.0.0.1‘, # 连接数据库的地址
‘PORT‘: 3306, # 端口
‘NAME‘: "day61", # 数据库名称
‘USER‘: ‘root‘, # 用户
‘PASSWORD‘: ‘123456‘ # 密码
}
}
3. 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库
在项目/__init__.py文件中,写下面两句:
import pymysql
# 告诉Django用pymysql来代替默认的MySQLdb
pymysql.install_as_MySQLdb()
4. 在app下面的models.py文件中定义一个类,这个类必须继承models.Model
class 类名(models.Model):
...
5. 执行两个命令
1. python3 manage.py makemigrations
2. python3 manage.py migrate

 

Django连接MySQL

1、创建数据库 (注意设置 数据的字符编码)

由于Django自带的orm是data_first类型的ORM,使用前必须先创建数据库

create database alipay default character set utf8 collate utf8_general_ci;

 

技术分享图片

2、 在Django项目的settings.py文件中,配置数据库连接信息:

 
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘,
‘HOST‘:‘127.0.0.1‘,
‘PORT‘:‘3306‘,
‘NAME‘:"alipay",
‘USER‘:‘root‘,
‘PASSWORD‘:‘123456‘
# ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
}
}

3、 在Django项目的__init__.py文件中写如下代码,告诉Django使用pymysql模块连接MySQL数据库:

 
import pymysql

pymysql.install_as_MySQLdb()

 技术分享图片

技术分享图片

刚才在操作时遇到一个问题就是pycharm执行操作后alipay库中没有相应的数据表,原因出现在settings.py文件的DATABASES中的ENGINE问题,改为django.db.backends.mysql就好了

以上是关于Django-ORM操作数据库无数据问题的主要内容,如果未能解决你的问题,请参考以下文章

Django-ORM操作

Django-orm操作的基础认识

Django-ORM操作

django-ORM操作

django-orm

Django-ORM框架