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

本文介绍了Flask框架下利用SQLAlchemy进行数据库操作时常用的数据类型,如Integer、Float、Decimal、DateTime等,并通过实例演示了如何在实际项目中创建和操作这些数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值