1.ORM操作: 1.创建数据库'db4_16' 2.在settings.py中把django的默认数据库sqlite修改为mysql DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db4_16', 'USER':'root', 'PASSWORD':'123', 'HOST':'localhost', 'PORT':3306 } } 3.在__init__.py中写入以下代码,把MySQLdb(默认)修改为通过pymysql模块来连接数据库 import pymysql pymysql.install_as_MySQLdb() 4.在settings里注册app01 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config',#注册app01,自动创建,如果需要注册app02,就在下面添加 'app02' ] 5.创建表字段 在app01的models.py里面写入类,创建字段名nid,username,password 注意:nid不写也可以,数据库自动创建id(主键自增)。 from django.db import models class UserInfo(models.Model): nid = models.BigAutoField(primary_key=True) username = models.CharField(max_length=32) password = models.CharField(max_length=64) 6.创建数据表,在Terminal终端输入命令: python manage.py makemigrations python manage.py migrate 注意: django 3.0.5 ,pymysql 0.9.3,输入python manage.py makemigrations 出现问题:mysqlclient 1.3.13 or newer is required; you have 0.9.3. 解决办法: 1.cmd安装django2.2:pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ django==2.2 2.创建项目的时候勾选Inherit global site-packages(继承全局的site-packages包) 3.打开路径C:\Python\Lib\site-packages\django\db\backends\mysql的base.py, 把第35和36行注释if version < (1, 3, 13): raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__) 4.打开同样路径的operations.py,把146行的decode修改为encode 如果已经使用了django 3.0.5创建了项目,就算后面把版本修改为2.2,还是无法解决问题。
2.#类创建表格,在models中利用类来添加和修改表字段,在views中利用类.对象.方法来做增删改查 2.1 models.py创建表字段 from django.db import models #类创建表格,在models中利用类来添加和修改表字段,在views中利用类.对象.方法来做增删改查 class UserInfo(models.Model): # nid = models.BigAutoField(primary_key=True) username = models.CharField(max_length=32) password = models.CharField(max_length=64) #设置默认值为1。当表格有数据,新添age会有提示,输入2退出,然后设置default=1或者null=True age = models.IntegerField(default=1) #设置为空 # age = models.IntegerField(null=True) #设置外键 ug = models.ForeignKey('UserGroup',null=True,on_delete=None) class UserGroup(models.Model): title = models.CharField(max_length=32) class UserInfo2(models.Model): name = models.CharField(max_length=32) age = models.IntegerField() ut = models.ForeignKey('UserType',null=True,on_delete=None) class UserType(models.Model): title = models.CharField(max_length=32) 2.2 views.py表的增删改查 from django.shortcuts import render, HttpResponse from app01 import models from django.core.paginator import Paginator def index(request, a1): # 增,ug在数据库被更名为ug_id create = models.UserInfo.objects.create(username='tom', password='111', age=18, ug_id=1) # 删 delete = models.UserInfo.objects.filter(id=4).delete() # 改 update = models.UserInfo.objects.filter(id=5).update(username='alex') # 查全部,结果是列表,列表里的每一个对象就是一行,for循环取值 select_all = models.UserInfo.objects.all() print(select_all) # [<UserInfo: UserInfo object (5)>, <UserInfo: UserInfo object (6)>] for row in select_all: print(row.id, row.username, row.password, row.age, row.ug_id) # 查一行 select_one = models.UserInfo.objects.filter(id=6) print(select_one) # [<UserInfo: UserInfo object (6)>] # 查出id大于1 select1 = models.UserInfo.objects.filter(id__gt=1) # 查出id小于7 select2 = models.UserInfo.objects.filter(id__lt=7) return render(request, 'index.html', {'create': create, 'select_all': select_all})