首先确保你有一个可以用于连接的数据库。这里是用本地的数据库演示。
先去项目的settings.py文件里面找到databases将其注释掉(默认是的sqlite3)。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'autodb', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': '3306', } }
然后注册一下,进行数据库操作千万记得注册 ,不然可能遇到No changes detected问题
安装一下pymysql: pip install pymysql
在主项目的__init__.py下引入:
import pymysql
pymysql.install_as_MySQLdb()
不导入可能出现:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.问题
最后在modules.py里面写如下代码,创建表
在命令行输入:
python manage.py makemigrations
python manage.py migrate
安装都ok后,去可以数据库查看userinfo表已经创建成功:
———————————————————————————————————————————
在views.py中添加一个orm方法,并在urls里面注册一下
运行一下,去数据库中查看。
将id=1的密码改为456.
删除id=1的那条数据。
也可以使用all删除所有,userInfo.objects.all().delete()
完整代码如下:
def orm(request): # userInfo.objects.create(name="lufei", pswd="123") # userInfo.objects.filter(id=1).update(pswd="456") # userInfo.objects.filter(id=1).delete() # userInfo.objects.all().delete()#删除所有 query_set = userInfo.objects.all()#查询所有数据相当于seleclt * for item in query_set: print(item.name, item.pswd) query_set=userInfo.objects.filter(id=1)#查询id=1的数据 query_set=userInfo.objects.filter(pswd="123").first()#查询第一条数据 return HttpResponse("操作成功")
补充:数据库的一些操作
代码如下: class department(models.Model): depart = models.CharField(max_length=32) class userInfo(models.Model): # ID默认自增主键不用写 id = models.BigAutoField(verbose_name="id", primary_key=True) name = models.CharField(verbose_name="名字", max_length=32) age = models.IntegerField() # 最长10位数,小数保留两位,默认是0 money = models.DecimalField(max_digits=10, decimal_places=2, default=0) create_time = models.DateTimeField() # 限制输入1为男,0为女 sex_choice = ( (1, "男") (0, "女") ) sex = models.SmallIntegerField(choices=sex_choice) # 约束 --生成的字段为guanlian_id # to --关联的哪张表 , to_field -- 表中的哪一列 # 级联删除-department表的数据删除了,对应的userInfo表的使用department表中id属性的行也删除 guanlian = models.ForeignKey(to="userInfo", to_field="id", on_delete=models.CASCADE()) # 制空 null= True blank = True ---表示默认为空 guanlian = models.ForeignKey(to="userInfo", to_field="id", null=True, blank=True, on_delete=models.SET_NULL)