sqlalchemy的常用数据类型怎么使用

编程之家收集整理的这篇文章主要介绍了sqlalchemy的常用数据类型怎么使用编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本篇内容主要讲解“sqlalchemy的常用数据类型怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sqlalchemy的常用数据类型怎么使用”吧!

    sqlalchemy的常用数据类型

    数据类型 python数据类型 说明
    Integer int 整形
    String str 字符串
    Float float 浮点型
    DECIMAL decimal.Decimal 定点型
    Boolean bool 布尔型
    Date datetime.date 日期
    DateTime datetime.datetime 日期和时间
    Time datetime.time 时间
    Enum str 枚举类型
    Text str 文本类型
    LongText str 长文本类型

    既然我们知道sqlalchemy常用数据类型有哪些,下面我们就来看看这些数据类型的用法。

    首先,打开我们py代码编辑神器(pycharm)

    而是直接在此基础上讲解sqlalchemy数据类型的用法。

    from sqlalchemy import create_engine,Column,Integer
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm.session import sessionmaker
    DIALCT = "mysql"
    DRIVER = "pymysql"
    USERNAME = "root"
    PASSWORD = "admin"
    HOST = "127.0.0.1"
    PORT = "3306"
    DATABASE = "test"
    DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
    engine = create_engine(DB_URI)
    Base = declarative_base(engine)
    session = sessionmaker(engine)()
     
    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
     
     
    Base.metadata.drop_all()
    Base.metadata.create_all()

    在讲解前,我们先测试下模型是否能够成功映射到数据库中,运行上述代码

    sqlalchemy的常用数据类型怎么使用

    没有报错,我们在打开mysql命令行工具,输入以下命令

    sqlalchemy的常用数据类型怎么使用

    嗯,person库表已成功映射到数据库中。

    OK,万事俱备。下面我们就逐一来讲类型的用法。

    第一种:Integer

    我们在Person模型中新增一个age字段

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        age = Column(Integer)

    然后向表中插入一条数据

    p = Person(age = 22)session.add(p)session.commit()

    运行上述代码,然后输入下方命令检查数据是否插入到表中以及该字段是否为int类型

    sqlalchemy的常用数据类型怎么使用

    第二种:String

    我们先将age字段注释掉,然后从sqlalchemy导入String类型(使用某种数据类型前,记得将该数据类型从sqlalchemy导入,由于篇幅太长,我们下方数据类型省略该步骤),再新增一个name字段(括号中的20表示该字符串最大长度为20)

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        name = Column(String(20))

    插入一条数据试试

    p = Person(name = "tom")
    session.add(p)
    session.commit()

    运行上述代码,然后输入下方命令检查数据是否插入到表中以及该字段是否为string类型(映射到数据库,对应varchar类型)

    sqlalchemy的常用数据类型怎么使用

    第三种:Float

    什么情况下会用到Float类型?比如存储体重、价格等.....

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        # name = Column(String(20))
        price = Column(Float)

    插入测试数据

    p = Person(price = 123.456789)
    session.add(p)
    session.commit()

    运行上述代码,然后输入下方命令检查数据是否插入到表中以及该字段是否为float类型

    sqlalchemy的常用数据类型怎么使用

    嗯!!我明明写的是123.456789,但是存储到数据库中却变成了123.457,为什么会这样呢?

    原因我之前说过:float单精度类型,单精度数据类型存储到表中容易被丢失。既然我们知道了原因,哪如何解决呢??方法就是用接下来要讲的定点类型(DECIMAL)。

    第四种:DECIMAL

    DECIMAL可以防止数据jingd

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        # name = Column(String(20))
        # price = Column(Float)
        price = Column(DECIMAL(7,3))

    DECIMAL有两个参数,第一个参数用于指定一共多少位数,第二个参数用于指定小数点后最多多少位数

    例如:DECIMAL(4,2)表示一共存储4位数字,小数点后最多有两位

    如果传入不符合规则数值时会报如下错误:

    sqlalchemy的常用数据类型怎么使用

    所以我们在插入数据时一定要遵守参数规则

    p = Person(price = 1234.567)
    session.add(p)
    session.commit()

    运行上述代码,然后输入下方命令检查数据是否插入到表中以及该字段是否为decimal类型

    sqlalchemy的常用数据类型怎么使用

    第五种:Boolean

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        # name = Column(String(20))
        # price = Column(Float)
        # price = Column(DECIMAL(7,3))
        delete = Column(Boolean)

    插入数据试试。我们知道,1代表true,0代表false

    p = Person(delete = 1)
    session.add(p)
    session.commit()

    运行上述代码,然后输入下方命令检查数据是否插入到表中(存储到数据库中对应tinyint类型)

    sqlalchemy的常用数据类型怎么使用

    第六种:Enum

    什么情况下会用到枚举类型呢?比如用户填写性别时,固定只能选男或者女,不可能不男不女,对吧!

    Enum()括号中为枚举列表,在这个里面可以罗列出可输入的值!

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        # name = Column(String(20))
        # price = Column(Float)
        # price = Column(DECIMAL(7,3))
        # delete = Column(Boolean)
        sex = Column(Enum("男","女"))

    我们先插入一条错误数据试试

    p = Person(sex="不男不女")
    session.add(p)
    session.commit()

    运行代码、结果报如下错误:

    sqlalchemy的常用数据类型怎么使用

    我们再输入一条正确数据试试

    sqlalchemy的常用数据类型怎么使用

    嗯,数据成功插入到表中,且数据类型为enum。

    第七种:Date

    Date只能存储指定的年月日,不能存储时分秒

    说到日期类型,相信大家都熟悉,比如某年某月某日生。嗯、下面咱们就谈谈这个Date类型。

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        # name = Column(String(20))
        # price = Column(Float)
        # price = Column(DECIMAL(7,3))
        # delete = Column(Boolean)
        # sex = Column(Enum("男","女"))
        create_time = Column(Date)

    然后从datetime导入datetime这个包,将数据添加至数据库

    from datetime import datetime
    p = Person(create_time = datetime(2018,8,8))
    session.add(p)
    session.commit()

    datetime()中的数值用于传递指定的年月日

    运行并查看数据结果如下:

    sqlalchemy的常用数据类型怎么使用

    第八种:DateTime

    DateTime存储指定的年月日时分秒

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        # name = Column(String(20))
        # price = Column(Float)
        # price = Column(DECIMAL(7,3))
        # delete = Column(Boolean)
        # sex = Column(Enum("男","女"))
        # create_time = Column(Date)
        create_time = Column(DateTime)

    添加测试数据

    p = Person(create_time = datetime(2018,8,8,16,11,50))
    session.add(p)
    session.commit()

    datetime()括号中传递指定的年月日时分秒

    运行并查看数据结果如下:

    sqlalchemy的常用数据类型怎么使用

    第九种:Time

    Time只能存储时分秒,不能存储年月日

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        # name = Column(String(20))
        # price = Column(Float)
        # price = Column(DECIMAL(7,3))
        # delete = Column(Boolean)
        # sex = Column(Enum("男","女"))
        # create_time = Column(Date)
        # create_time = Column(DateTime)
        create_time = Column(Time)

    插入测试数据,time()后面传递关键字参数,用于指定时分秒

    from datetime import datetime,time
    p = Person(create_time=time(hour=12,minute=20,second=50))
    session.add(p)
    session.commit()

    运行并查看结果:

     

    sqlalchemy的常用数据类型怎么使用

    第十种:Text

    这个没什么好讲的啊,当字符串长度比较长时就可以使用Text类型

    class Person(Base):
        __tablename__ = "person"
        id = Column(Integer , primary_key=True , autoincrement=True)
        # age = Column(Integer)
        # name = Column(String(20))
        # price = Column(Float)
        # price = Column(DECIMAL(7,3))
        # delete = Column(Boolean)
        # sex = Column(Enum("男","女"))
        # create_time = Column(Date)
        # create_time = Column(DateTime)
        # create_time = Column(Time)
        content = Column(Text)

    插入数据:

    p = Person(content = "人最需要的是学习")
    session.add(p)
    session.commit()

    运行并查看结果:

    sqlalchemy的常用数据类型怎么使用

    第十一种:LongText

    由于Text的存储长度有限,我们就可以使用LongText来存储数据。

    由于LongText类型在mysql数据库才有,其它数据库没有该数据类型,在使用前,记得从mysql数据库导入该数据类型

    from sqlalchemy.dialects.mysql import LONGTEXT

    插入数据:

    p = Person(content = "我要给它做广告,让它在人群中最闪耀!")
    session.add(p)
    session.commit()

    运行上述代码并查看结果:

    sqlalchemy的常用数据类型怎么使用

    到此,相信大家对“sqlalchemy的常用数据类型怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程之家网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐


    本篇内容主要讲解“sqlalchemy的常用数据类型怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sqlalche...
    今天小编给大家分享一下sqlServer实现分页查询的方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家
    这篇文章主要介绍“sqlmap之osshell怎么使用”,在日常操作中,相信很多人在sqlmap之osshell怎么使用问题上存在疑惑,小编查阅了各式资料,整理出
    本篇内容介绍了“SQL注入的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
    1. mssql权限sa权限:数据库操作,文件管理,命令执行,注册表读取等system。是mssql的最高权限db权限:文件管理,数据库操作等 users-administratorspublic权限:数据库操作 guest-users2、sql server注入执行命令查
    sql执行计划如何查看?在SPL庞大的数据中我们不知道如何查看实际数据库中发生了什么事情,有必要定期进行查询优化和索引否则会影响我们后期的SQL的查询速度。那么针对这样的问题我们必须要知道SQL执行的计划,在本文中winwin7小编给大家分享下SQL执
    SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点应用非常广泛。不过在使用中,我们会遇到非常多的错误,面对这么庞大的数据库环境,当然会有精确的错误代码的对照季,下面小编分享的
    SQL Server本地账户无法登陆出现错误提示:error:40-Could not open a connenction to SQL Server的问题很常见,对于初学者来说可能不知道如何解决,一起来看看下面的解决方案。解决步骤如下:1、这种情况需要开启 SQL Server service
    微软推出的SQL2008是一款非常好用的数据库软件,它稳定、功能强大,为众多企业提供了最佳的数据库解决方案,那么我们如何在Windows中安装它呢,一些朋友对SQL Server 2008的安装过程还不是很熟悉,下面就一起来看看SQL Server 2008详细安装图解...
    本页概要如果您使用的是 SQL Server 2005备份和还原Sp_detach_db 和 Sp_attach_db 存储过程关于排序规则的说明导入和导出数据(在 SQL Server 数据库之间复