推荐学习博客:http://www.cnblogs.com/wupeiqi/articles/6216618.html
需求: 汇总django orm操作,代替原生mysql语句来操作数据库;里面内容包含:
创建单表,多对一表,多对多表;
如何在django配置mysql;
操作数据行(单表增删改查, 联表查询,django查询高级操作,以及django如何使用原生sql语句进行查询)
1 创建数据库表(单表,多对一表) + 配置文件
3 django的ORM(不能创建数据库,要先创建数据库) 步骤: 1 手工创建数据库day3db 2 修改django连接数据库mysql, 默认连接的数据库是sqlite DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day3db', 'USER': 'root', 'PASSWORD': '', 'HOST': '127.0.0.1', 'PORT': '3306', } } 3 使用Pymysql连接mysql, 默认连接mysql的接口是MySQLdb 在day3里面的init.py增加以下内容: import pymysql pymysql.install_as_MySQLdb() 4 在app01 models.py里面添加以下内容创建表UserInfo class UserInfo(models.Model): nid = models.AutoField(primary_key=True) # 自增列可以不用写 username = models.CharField(max_length=128) password = models.CharField(max_length=64) 5 注册app01应用 在settings.py修改 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01' ] 6 运行以下两个命令:必须在工程目录() python manage.py makemigrations python manage.py migrate 7 创建表 (在models.py里面修改) 记住最后都要执行命令:python manage.py makemigrations; python manage.py migrate) - 创建单表(UserInfo, Group) class UserInfo(models.Model): nid = models.AutoField() username = models.CharField(max_length=128) password = models.CharField(max_length=64) ug = models.ForeignKey('Group', null=True) #ug是一个对象,可以访问ug_id, ug_title ,id, title都是Group的字段 class Group(models.Model): title = models.CharField(max_length=64) - 创建多对一关系表 class UserInfo(models.Model): ..... # 增加一行代码 ug = models.ForeignKey('Group', null=True) - ps: python manage.py makemigrations 作用: 读取app01目录下的migrations最新的py(有按序列),并和models.py里面的类进行比较 得到一个新的py, 并存储在migration里面 python manage.py migrate作用: 根据migrations里面最新的py,将其操作翻译成sql语句,进行数据库表操作 8 修改数据表 - 修改字段名字 class UserInfo(models.Model): nid = models.AutoField() uname = models.CharField(max_length=128) password = models.CharField(max_length=64) - 增加一列(数据表可能有数据,所以新增列一定要确保有数据或者允许为空) class UserInfo(models.Model): nid = models.AutoField() uname = models.CharField(max_length=128) password = models.CharField(max_length=64) age = model.IntegerField(default=20) - 删除一列:注释掉