Integer :整形,映射到数据库中是 int 类型。Float :浮点类型,映射到数据库中是 float 类型。他占据的 32 位。Double :双精度浮点类型,映射到数据库中是 double 类型,占 据64 位 (SQLALCHEMY 中没有 ) 。String :可变字符类型,映射到数据库中是 varchar 类型 .Boolean :布尔类型,映射到数据库中的是 tinyint 类型。DECIMAL :定点类型。是专门为了解决浮点类型精度丢失的问 题的。在存储钱相关的字段的时候建议大家都使用这个数据类型。Enum :枚举类型。指定某个字段只能是枚举中指定的几个值, 不能为其他值。Date :存储时间,只能存储年月日。映射到数据库中是 date 类 型。DateTime :存储时间,可以存储年月日时分秒毫秒等。映射到 数据库中也是datetime 类型。Time :存储时间,可以存储时分秒。映射到数据库中也是 time 类型。Text :存储长字符串。一般可以存储 6W 多个字符。如果超出了 这个范围,可以使用LONGTEXT 类型。映射到数据库中就是 text类型。LONGTEXT :长文本类型,映射到数据库中是 longtext 类型。
代码实现
# SQLAlchemy常见的数据类型
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base,sessionmaker
from sqlalchemy import Column,Integer,Float,DECIMAL,String,Boolean,Enum,Date,DateTime,Time,Text
import enum
# 数据库的变量
HOST = '127.0.0.1'
PORT = 3306
DATA_BASE = 'itbz'
USER = 'root'
PWD = '123456'
DB_URL = f'mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}'
# 创建引擎
engine = create_engine(DB_URL)
# 创建一个基类
Base = declarative_base()
Session = sessionmaker(engine)
class TagEnum(enum.Enum):
python ='python'
flask = 'Flask'
mysql = 'Mysql'
class News(Base):
__tablename__='t_news'
id = Column(Integer,primary_key=True,autoincrement=True)
# 可能会精度丢失
price1 = Column(Float)
price2 = Column(DECIMAL)
is_delete = Column(Boolean)
tag1 = Column(Enum('Python','Flask','Mysql'))
tag2 = Column(Enum(TagEnum))
create_time = Column(Date)
update_time = Column(DateTime)
delete_time = Column(Time)
content = Column(Text)
if __name__ == '__main__':
Base.metadata.create_all(engine)
添加表执行成功
添加数据