推荐学习博客: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)

        - 删除一列:注释掉
View Code

相关文章: