Sqlalchemy 常用数据类型

1. SQLAlchemy常用数据类型

  1. Integer:整形,映射到数据库中是int类型。

  2. Float:浮点类型,映射到数据库中是float类型。他占据的32位。

  3. Double:双精度浮点类型,映射到数据库中是double类型,占据64位。

  4. String:可变字符类型,映射到数据库中是varchar类型.

  5. Boolean:布尔类型,映射到数据库中的是tinyint类型。

  6. DECIMAL:定点类型。是专门为了解决浮点类型精度丢失的问题的。在存储钱相关的字段的时候建议大家都使用这个数据类型。并且这个类型使用的时候需要传递两个参数,第一个参数是用来标记这个字段总能能存储多少个数字,第二个参数表示小数点后有多少位。

  7. Enum:枚举类型。指定某个字段只能是枚举中指定的几个值,不能为其他值。在ORM模型中,使用Enum来作为枚举

  8. Date:存储时间,只能存储年月日。映射到数据库中是date类型。在Python代码中,可以使用datetime.date来指定

  9. DateTime:存储时间,可以存储年月日时分秒毫秒等。映射到数据库中也是datetime类型。在Python代码中,可以使用datetime.datetime来指定。示例代码如下:

  10. Time:存储时间,可以存储时分秒。映射到数据库中也是time类型。在Python代码中,可以使用datetime.time来至此那个。

  11. Text:存储长字符串。一般可以存储6W多个字符。如果超出了这个范围,可以使用LONGTEXT类型。映射到数据库中就是text类型。

  12. LONGTEXT:长文本类型,映射到数据库中是longtext类型。

2. 案例

# coding:utf-8
# Author: liangjun.chen

from datetime import date
from datetime import datetime
from datetime import time

from sqlalchemy import create_engine, Column, Integer, String, Float, Boolean, DECIMAL, Enum, Date, DateTime, Time, Text
from sqlalchemy.dialects.mysql import LONGTEXT

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

HOSTNAME = '127.0.0.1'
PORT = 3306
DATABASE = 'sqlalchemy_first'
USERNAME = 'root'
PASSWORD = '123456'

DB_URI = 'mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}?charset=utf8'.format(
        username=USERNAME, password=PASSWORD, host=HOSTNAME, port=PORT, dbname=DATABASE
)
engine = create_engine(DB_URI)
Base = declarative_base(engine)
Session = sessionmaker(engine)
session = Session()


class Artile(Base):
    __tablename__ = 'article'
    id = Column(Integer, primary_key=True, autoincrement=True)
    price = Column(Float)
    is_delete = Column(Boolean)
    money = Column(DECIMAL(10, 4))
    language = Column(Enum('python', 'flask'))
    create_date = Column(Date)
    create_datetime = Column(DateTime)
    content = Column(String(100))
    create_time = Column(Time)
    content_text = Column(Text)
    long_text = Column(LONGTEXT)

Base.metadata.drop_all()
Base.metadata.create_all()

article = Artile(price=3.1415926, is_delete=True, money=10000.1234, language='flask',
                 create_date=date(2018,3,22), create_datetime=datetime(2018,3,22,22,51,00), content='tesxxxx',
                 create_time=time(22,57,00), content_text='text', long_text='longtext')
session.add(article)
session.commit()
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy的Column定义中常用的属性有: 1. type:指定列的数据类型常用数据类型有String、Integer、Boolean、DateTime等。例如: ```python from sqlalchemy import Column, String class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) ``` 2. primary_key:指定列是否为主键。例如: ```python from sqlalchemy import Column, Integer, String class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) ``` 3. unique:指定列的值是否唯一。例如: ```python from sqlalchemy import Column, Integer, String class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50), unique=True) ``` 4. nullable:指定列是否可以为NULL。例如: ```python from sqlalchemy import Column, Integer, String class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50), nullable=False) ``` 5. default:指定列的默认值。例如: ```python from sqlalchemy import Column, Integer, String, DateTime, func class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50), nullable=False) created_at = Column(DateTime, default=func.now()) ``` 6. index:指定列是否创建索引。例如: ```python from sqlalchemy import Column, Integer, String, Index class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) email = Column(String(50), unique=True, index=True) idx_name_email = Index('idx_name_email', name, email) ``` 7. server_default:指定数据库端默认值。例如: ```python from sqlalchemy import Column, Integer, String class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) status = Column(Integer, server_default='0') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值