小言_互联网的博客

Django 操作使用MySQL

281人阅读  评论(0)

Django 操作使用MySQL

1.在Django项目中的settings.py添加字段

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'pythondb',   # 数据库名
        'USER': 'root',       # 连接MySQL用户名
        'PASSWORD': '123456', # 密码
        'HOST': '127.0.0.1',  # 主机名
        'PORT': '3306',       # 端口号
    }
}

2.在创建的app中的models.py创建类

from django.db import models
class PythonUser(models.Model):
    email = models.CharField(max_length=100, null=True, blank=True)
    pwd = models.CharField(max_length=100, null=True, blank=True)
    phone = models.CharField(max_length=11, null=True, blank=True)
    nickname = models.CharField(max_length=50, null=True, blank=True)
    join_time = models.DateTimeField(auto_now_add=True)
    # auto_now_add=True 自动添加当前时间
    age = models.IntegerField(default=0)
    img = models.ImageField(upload_to="upload/", default="static/upload/a.jpg", max_length=100)
    # upload_to  图像上传地址
    # 等级
    vip = models.IntegerField(default=0, null=True, blank=True)
  • 其中app名_pythonuser 为数据库的表名, email、pwd、phone、nickname、join_time、age、img、vip为表的列名,并且在创建生成数据库表后,会默认新增一列为id列。
  • max_length=100 表示列的最大长度为100;
  • null=True, blank=True 表示插入数据时,列的数据可以为空;
  • auto_now_add=True 表示将插入数据时的当前时间,插入数据库表中;
  • auto_now=Ture,字段保存时会自动保存当前时间,但要注意每次对其实例执行**save()**的时候都会将当前时间保存,也就是不能再手动给它存非当前时间的值;
  • auto_now_add=True,字段在实例第一次保存的时候会保存当前时间,不管你在这里是否对其赋值。但是之后的save()是可以手动赋值的。也就是新实例化一个model,想手动存其他时间,就需要对该实例save()之后赋值然后再save();
  • default=0 表示默认为0。

3.在settings.py文件所在目录下的__init__.py文件中添加代码语句

# 用pymysql替换django默认的mysqlclient
import pymysql
pymysql.install_as_MySQLdb()

4.在命令行Terminal执行命令

python manage.py makemigrations  将类转换成sql相关语句
python manage.py migrate  生成表
  • 注意会默认在app目录下创建migrations包,生成sql语句;
  • 如果修改models.py中类的代码,则需要重新执行上面两句命令,重新生成表。

5.在django中使用orm操作数据库

  • orm:即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。
(1)查询数据
  • 根据字段查询数据是否在数据库中,类名是models.py中创建的类名。
users = 类名.objects.filter(列名=数据的值)
# 查询的数据users可能是多个或者一个或者没有查询到,如果没有查询到数据,服务不会报错
user = 类名.objects.get()
# 查询的数据只能是一个,如果查询的数据不存在,服务会报错
users = 类名.objects.all() 
# 查询所有数据
(2)插入数据
user = 类名()
user.列名 = 要插入的数据的值
user.save()
(3)删除数据
类名.objects.filter(列名=).delete() # 删除对应数据
类名.objects.all().delete()  # 删除表中的所有数据
(4)更新数据
类名.objects.filter(列名=).update(要修改的列=修改的值) 
# 修改对应数据的值
类名.objects.all().update(要修改的列=修改的值)
# 修改所有数据的值

转载:https://blog.csdn.net/weixin_45459224/article/details/101032813
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场