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...
    1. mssql权限sa权限:数据库操作,文件管理,命令执行,注册表读取等system。是mssql的最高权限db权限:文件管理,数据库操作等 users-administratorspublic权限:数据库操作 guest-users2、sql server注入执行命令查
    本页概要如果您使用的是 SQL Server 2005备份和还原Sp_detach_db 和 Sp_attach_db 存储过程关于排序规则的说明导入和导出数据(在 SQL Server 数据库之间复
    DBCC CHECKIDENT 检查指定表的当前标识值,如有必要,还对标识值进行更正。 语法 DBCC CHECKIDENT ( 'table_name' [ , { NORESEED
    这里对 SQL Server 字符串函数进行分门别类地列出,便于查阅和记忆,相信大家都在其它方面有高深的编程基础,从字面上来说大家都知道这些函数的意义,就不对这些函数作过多的解释了,主要谈些经验,具体
    查询及删除重复记录的方法 1、查找表(people)中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select*frompeoplewherepeopleIdin(selectpe
    微软发SQL Server 2008第二个CTP预览版from: http://news.csdn.net/n/20070807/107158.html8月7日消息,微软公司本周发布了SQL Serv
    症状当您将数据库备份恢复到另一台服务器时,可能会遇到孤立用户的问题。SQL Server 联机丛书中的孤立用户疑难解答主题中没有讲述解决此问题的具体步骤。本文介绍了如何解决孤立用户问题。更多信息虽然术
    当登录SQL Server 2005时可能碰到错误: 'No Process is on the Other End of the Pipe'。解决方法:(1)Open up SQL
    概要本文描述如何映射标准登录和集成登录来解决在运行 SQL Server 的服务器之间移动数据库时的权限问题。更多信息当您将数据库从一个运行 SQL Server 的服务器移到另一个运行 SQL Se
    ----------------------------------------问题:该用户与可信的SQL SERVER 连接无关联使用sa用户或自建用户使用“SQL SERVER 身份认证”连接数据
    更新日期: 2007 年 5 月 20 日 使用下表可以确定各种版本的 Microsoft SQL Server 2005 支持哪些功能。有关 SQL Server 2005 Enterprise E
    当从Excel导入数据到Sql Sever中,可能会出现以下问题:
对于指定的缓冲区大小而言,源列的数据太大
    使用SQL Server 2005 命名数据库对象时可以参照微软的示例数据库AdventureWorks。其次可以参照以下内容:Database Naming Conventions Version
    方法一:--生成数据库脚本的方法最快,处理的也最好 sql2000企业管理器 --右键要清理的数据库 --所有任务 --生成SQL脚本 --里选择"生成全部对象脚本"",
    INTRODUCTION本文介绍如何不同服务器上的 Microsoft SQL Server 2005 实例之间传输登录和密码。本文, 服务器 A 和服务器 B 是不同的服务器。 此外, 服务器 A
    TinySQL Code Generatorfrom: http://weblogs.asp.net/firoz/archive/2007/09/13/tinysql-code-generator.a
    通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没
    SQL Server 2005 行列转换有用SQL写过交叉报表的,往往都比较头痛,还好现在SQL2005中提供了新的PIVOT操作符,可以很简单地写出交叉数据查询。正好前两天在研究ORACLE最新的1
    错误信息: Server Error in '/xxxxx' Application.Timeout expired. The timeout period elapsed prior