• 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)',
    
  • 相关阅读:
    [Lydsy1706月赛]大根堆
    某考试 T1 Function
    [SHOI2016] 随机序列
    某考试 T1 至危警告
    某考试 T2 yja
    bzoj1880 [Sdoi2009]Elaxia的路线
    bzoj1804 [Ioi2007]Flood 洪水
    bzoj4546 codechef XRQRS
    bzoj4547 小奇的集合
    bzoj1443 [JSOI2009]游戏Game
  • 原文地址:https://www.cnblogs.com/wyh0717/p/13559266.html
Copyright © 2020-2023  润新知