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; # 查看现有数据库
- 配置使用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
-
Django默认使用MySQLdb模块链接MySQL,但在python3中还没有MySQLdb
-
主动修改为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')