• Flask数据库_SQLAIchemy常用的数据类型与使用


    Flask数据库_SQLAIchemy常用的数据类型与使用

    一.数据类型介绍

    • Integer:整形,映射到数据库中是int类型。
    • Float:浮点类型,映射到数据库中是float类型。他占据的32 位。
    • Double:双精度浮点类型,映射到数据库中是double类型,占 据64位 (SQLALCHEMY中没有)。
    • String:可变字符类型,映射到数据库中是varchar类型.
    • Boolean:布尔类型,映射到数据库中的是tinyint类型。
    • DECIMAL:定点类型。是专门为了解决浮点类型精度丢失的问 题的。在存储钱相关的字段的时候建议大家都使用这个数据类 型。
      这个类型使用的时候需要传递两个参数,第一个参数是用来标记这个字段总能能存储多少个数 字,第二个参数表示小数点后有多少位。
    • Date:存储时间,只能存储年月日。映射到数据库中是date类 型。在Python代码中,可以使用 datetime.date 来指定。
    • DateTime:存储时间,可以存储年月日时分秒毫秒等。映射到 数据库中也是datetime类型。在Python代码中,可以使用 datetime.datetime 来指定。
    • Time:存储时间,可以存储时分秒。映射到数据库中也是time 类型。在Python代码中,可以使用 datetime.time 来至此那个。
    • Text:存储长字符串。一般可以存储6W多个字符。如果超出了 这个范围,可以使用LONGTEXT类型。映射到数据库中就是text 类型。
    • LONGTEXT:长文本类型,映射到数据库中是longtext类型。

    二.实例

    #coding=utf-8
    
    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker
    
    from sqlalchemy import Column,Integer,String,Float,Enum,Boolean,DECIMAL,Text,Date,DateTime,Time
    from datetime import date,datetime,time
    import enum
    
    USER = 'xx'
    PWD = 'xx'
    HOST = '127.0.0.1'
    PORT = 3306
    DATA_BASE = 'flask_db'
    
    DB_URL = f'mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}'
    
    # 创建一个引擎
    engine = create_engine(DB_URL)
    Base = declarative_base(engine)
    Session = sessionmaker(engine)
    
    class Tage_enum(enum.Enum):
        python = 'Python'
        c = 'C/C++'
        j = 'Java'
    
    class News(Base):
        __tablename__ = 't_news'
        id = Column(Integer,primary_key=True,autoincrement=True)
        price1 = Column(Float)  #存储数据会有丢失!
        price2 = Column(DECIMAL(10,5))
        title = Column(String(32))
        is_delete = Column(Boolean)
        tage1 = Column(Enum('C/C++','Java','Python'))
        tage2 = Column(Enum(Tage_enum))
        create_time = Column(Date)
        update_time = Column(DateTime)
        delete_time = Column(Time)
        content = Column(Text)
    
    def add_data():
        news = News(
            price1 = 500.000123,
            price2 = 500.000123,
            title = '测试数据',
            is_delete = True,
            tage1 = 'Python',
            tage2 = 'c',
            create_time = date(2022,10,10),
            update_time = datetime(2022,10,13,10,10,10),
            delete_time = time(1,2,3),
            content = 'hh,正在测试'
        )
        with Session() as session:
            session.add(news)
            session.commit()
    
    if __name__ == '__main__':
        Base.metadata.create_all()
        add_data()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
  • 相关阅读:
    软件测试的方法总结
    改善Java代码有哪些方法?
    算法竞赛入门【码蹄集新手村600题】(MT1151-1200)
    SPA项目开发之表单验证&增删改功能
    2.2 Pthreads是什么
    《canvas》之第10章 canvas路径
    Gin+WebSocket实战——在线聊天室WebSocketDemo详细使用教程
    高德地图热力图问题之重复创建图层
    【无标题】
    three.js学习笔记(二十二)——混合HTML和WebGL
  • 原文地址:https://blog.csdn.net/qq_55961861/article/details/126835903