Django中使用MySQL

本文详细介绍了在Django中如何使用MySQL,包括一对多和多对多表结构的操作。从配置MySQL数据库到主动修改为pymysql,再到一对多和多对多的模型创建、查询和修改操作,以及values和values_list的使用,同时解决了远程链接MySQL可能遇到的问题。
摘要由CSDN通过智能技术生成

1、先写类:在 app01/models.py中写类

from django.db import models

class UserInfo(models.Model):
    uid = models.AutoField(primary_key=True)         # 自增id
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)

2、在Django项目中使用MySQL

1. 创建管理员密码,与数据库

        1.  mysqladmin -uroot password 123456                 #  用户名:root         密码:123456

        2.   mysql -uroot -p                                               #  dos下登录MySQL

        3.  create database MyCRM charset utf8;                #  创建数据库MyCRM

        4.  drop database MyCRM;                                    # 如果需要也可以把数据库删除

        5.  show databases;                                             #  查看现有数据库
  1. 配置使用MySQL(修改settings.py配置文件)
DATABASES = {
   
    'default': {
   
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'MyCRM',              # 指定数据库名称:MyCRM
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

'''注释默认数据库配置'''
# DATABASES = {
   
#     'default': {
   
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

3. 主动修改为pymysql

  1. Django默认使用MySQLdb模块链接MySQL,但在python3中还没有MySQLdb

  2. 主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可

import pymysql
pymysql.install_as_MySQLdb()

4. 创建表 (记得注册APP)

python manage.py makemigrations
python manage.py migrate --fake

5. 远程链接MySQL报错问题解决

#1、例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
# GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
# FLUSH   PRIVILEGES;


#2、如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
# GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
# FLUSH   PRIVILEGES;


#3、如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码
# GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
# FLUSH   PRIVILEGES;
# mysql -u root -pvmwaremysql>use mysql;

# mysql>update user set host = '%' where user = 'root';

# mysql>select host, user from user;

1.3 Django一对多表结构操作

1、一对多基本增删改查

from django.db import models

class UserInfo(models.Model):
    name = models.CharField(max_length=64,unique=True)
    ut = models.ForeignKey(to='UserType')

class UserType(models.Model):
    type_name = models.CharField(max_length=64,unique=True)
from django.shortcuts import render,HttpResponse
from app01 import models

def orm(request):
    # 1 创建
    # 创建数据方法一
    models.UserInfo.objects.create(name='root', ut_id=2)
    # 创建数据方法二
    obj = models.UserInfo(name='root', ut_id=2)
    obj.save()
    # 创建数据库方法三(传入字典必须在字典前加两个星号)
    dic = {
   'name': 'root', 'ut_id': 2}
    models.UserInfo.objects.create(**dic)

    # 2 删除
    # models.UserInfo.objects.all().delete()  # 删除所有
    models.UserInfo.objects.filter(name='root').delete()  # 删除指定

    # 3 更新
    # models.UserInfo.objects.all().update(ut_id=1)
    # models.UserInfo.objects.filter(name='zhangsan').update(ut_id=4)

    # 4.1 正向查找 user_obj.ut.type_name
    print( models.UserInfo.objects.get(name='zhangsan').ut.type_name )
    print( models.UserInfo.objects.filter(ut__type_name='student') 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值