SQLAlchemy常用数据类型

  1. Integer :整形,映射到数据库中是 int 类型。
  2. Float :浮点类型,映射到数据库中是 float 类型。它占据的32位。
  3. Double :双精度浮点类型,映射到数据库中是 double 类型,占据64位 ( SQLALCHEMY 中没有)。
  4. String :可变字符类型,映射到数据库中是 varchar 类型.
  5. Boolean :布尔类型,映射到数据库中的是 tinyint 类型。
  6. DECIMAL :定点类型。是专门为了解决浮点类型精度丢失的问题的。在存储钱相关的字段的时候建议大家都使用这个数据类型。并且这个类型使用的时候需要 传递两个参数 ,第一个参数是用来标记这个字段总能能存储多少个数字,第二个参数表示小数点后有多少位。
  7. Enum :枚举类型。指定某个字段只能是枚举中指定的几个值,不能为其他值。在ORM模型中,使用Enum来作为枚举。
class News ( Base ) : __tablename__ = 'news' tag = Column ( Enum ( "python" , 'flask' , 'django' ) )
  1. Date :存储时间,只能存储年月日。映射到数据库中是 date 类型。在 Python 代码中,可以使用 datetime.date 来指定。
  2. DateTime :存储时间,可以存储年月日时分秒毫秒等。映射到数据库中也是 datetime 类型。在 Python 代码中,可以使用 datetime.datetime 来指定。
  3. Time :存储时间,可以存储时分秒。映射到数据库中也是 time 类型。在 Python 代码中,可以使用 datetime.time 来指定。
class News ( Base ) : __tablename__ = 'news' create_time = Column ( Time ) news = News ( create_time = time ( hour = 11 , minute = 11 , second = 11 ) )
  1. Text :存储长字符串。一般可以存储 6W 多个字符。如果超出了这个范围,可以使用 LONGTEXT 类型。映射到数据库中就是 text 类型。
  2. LONGTEXT :长文本类型,映射到数据库中是 longtext 类型(需要从 sqlalchemy.dialects.mysql 中导入)。
from sqlalchemy import create_engine , Column , Integer , String , from sqlalchemy import Float , Enum , Boolean , DECIMAL , Text , Date , DateTime , Time from sqlalchemy . ext . declarative import declarative_base from sqlalchemy . dialects . mysql import LONGTEXT from sqlalchemy . orm import sessionmaker import enum from datetime import date from datetime import datetime from datetime import time #准备数据库的一堆信息 ip port user pwd 数据库的名称 按要求组织格式 HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 'first_sqlalchemy' USERNAME = 'root' PASSWORD = 'root' #dialect+driver://username:password@host:port/database?charset=utf8 #按照上述的格式来 组织数据库信息 DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8" . \ format ( username = USERNAME , password = PASSWORD , host = HOSTNAME , port = PORT , db = DATABASE ) #创建数据库引擎 engine = create_engine ( DB_URI ) #创建会话对象 session = sessionmaker ( engine ) ( ) #创建一个ORM模型 Base = declarative_base ( engine ) class News ( Base ) : __tablename__ = 'news' id = Column ( Integer , primary_key = True , autoincrement = True ) price1 = Column ( Float ) #存储数据时存在精度丢失问题 price2 = Column ( DECIMAL ( 10 , 4 ) ) title = Column ( String ( 50 ) ) is_delete = Column ( Boolean ) #枚举常规写法 tag1 = Column ( Enum ( 'PYTHON' , 'FLASK' , 'DJANGO' ) ) create_time1 = Column ( Date ) create_time2 = Column ( DateTime ) create_time3 = Column ( Time ) content1 = Column ( Text ) content2 = Column ( LONGTEXT ) #删除全部表 Base . metadata . drop_all ( ) Base . metadata . create_all ( ) #新增数据到表news中 a1 = News ( price1 = 1000.00018 , price2 = 1000.00018 , title = '测试数据' , is_delete = True , tag1 = "PYTHON" , tag2 = TagEnum . flask , create_time1 = date ( 2020 , 1 , 21 ) , create_time2 = datetime ( 2020 , 1 , 21 , 22 , 00 , 07 ) , create_time3 = time ( hour = 11 , minute = 12 , second = 13 ) , content1 = "hello" , content2 = "hello hi nihao" ) session . add ( a1 ) session . commit ( ) SQLAlchemy常用数据类型Integer:整形,映射到数据库中是int类型。Float:浮点类型,映射到数据库中是float类型。它占据的32位。Double:双精度浮点类型,映射到数据库中是double类型,占据64位 (SQLALCHEMY中没有)。String:可变字符类型,映射到数据库中是varchar类型.Boolean:布尔类型,映射到数据库中的是tinyint类型。... DateTime:传递dateting.datetime()进去 Time:传递datetime.time()进去 String:字符 类型 ,使用时需要指定长度,区别于text 类型 Text:文... conf_thres = Column(DOUBLE()) 说明,如果使用Flask-Migrate这种工具修改 数据 库,可能会出现问题。就行国外的大佬遇到的问题一样。至于怎么解决,我就不管了,反正我又不用。 2021-11-12
SQLAlchemy 介绍和基本使用 数据 库是一个网站的基础。Flask可以使用很多种 数据 库。比如MySQL,MongoDB,SQLite,PostgreSQL等。这里我们以MySQL为例进行讲解。而在Flask中,如果想要操作 数据 库,我们可以使用ORM来操作 数据 库,使用ORM操作 数据 库将变得非常简单。 在讲解Flask中的 数据 库操作之前,先确保你已经安装了以下软件: mysql:如果是在windows上,到官网下载。如果是ubuntu,通过命令sudo apt-get install mysql-serv
这里只介绍 sqlalchemy .types.* 中的 类型 , SQL 标准 类型 方面, 是写什么最后生成的 DDL 语句就是什么, 比如 BIGINT, BLOG 这些, 但是这些 类型 并不一定在所有 数据 库中都有支持. 除此而外, SQLAlchemy 也支