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类型。
二.实例
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()