orm介绍及简单配置

orm介绍及简单配置

orm -- Object Relational Mapping

  • ORM是“对象-关系-映射”的简称。(Object Relational Mapping,简称ORM)(将来会学一个sqlalchemy,是和他很像的,但是django的orm没有独立出来让别人去使用,虽然功能比sqlalchemy更强大,但是别人用不了)
  • img

将类对象 --- sql

类 -- 表

对象 -- 行

属性 -- 字段

app01 应用下 的models.py文件中写
	class UserInfo(models.Model):

        id = models.AutoField(primary_key=True)

        name = models.CharField(max_length=16,null=True,blank=True,db_index=True)

        age = models.IntegerField(default=1,unique=True,choices=((1,'男'),(2,'女'),(3,'二椅子')))

        current_date = models.DateField(auto_now=True,auto_now_add=True)

不连接mysql的话,默认连接的是sqlite数据库

配置连接mysql
1 settings.py 文件中找DATABASES这个配置,改为
	# DATABASES = {
    #     'default': {
    #         'ENGINE': 'django.db.backends.sqlite3',
    #         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #     }
    # }

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST':'127.0.0.1',
            'PORT':3306,
            'NAME':'orm01',
            'USER':'root',
            'PASSWORD':'123',
        }
    }

2 项目文件夹下的init文件中,写上下面两句
	import pymysql
	pymysql.install_as_MySQLdb()

3 执行数据库同步指令
	python manage.py makemigrations
	python manage.py migrate


ORM字段与数据库实际字段的对应关系:

'AutoField': 'integer AUTO_INCREMENT',
    'BigAutoField': 'bigint AUTO_INCREMENT',
    'BinaryField': 'longblob',
    'BooleanField': 'bool',
    'CharField': 'varchar(%(max_length)s)',
    'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
    'DateField': 'date',
    'DateTimeField': 'datetime',
    'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
    'DurationField': 'bigint',
    'FileField': 'varchar(%(max_length)s)',
    'FilePathField': 'varchar(%(max_length)s)',
    'FloatField': 'double precision',
    'IntegerField': 'integer',
    'BigIntegerField': 'bigint',
    'IPAddressField': 'char(15)',
    'GenericIPAddressField': 'char(39)',
    'NullBooleanField': 'bool',
    'OneToOneField': 'integer',
    'PositiveIntegerField': 'integer UNSIGNED',
    'PositiveSmallIntegerField': 'smallint UNSIGNED',
    'SlugField': 'varchar(%(max_length)s)',
    'SmallIntegerField': 'smallint',
    'TextField': 'longtext',
    'TimeField': 'time',
    'UUIDField': 'char(32)',
原文地址:https://www.cnblogs.com/wyh0717/p/13559266.html