欢迎访问宙启技术站
智能推送

SQLAlchemy中的Numeric()数据类型与数据库中的数值类型的映射关系

发布时间:2023-12-27 22:56:30

在SQLAlchemy中,Numeric()数据类型对应于数据库中的数值类型。它被用来存储精确的十进制数值,可以指定数字的精度和小数位数。

在SQLAlchemy中,可以使用Numeric()数据类型来定义一个数值列。具体的数值类型映射关系如下:

- 在MySQL中,Numeric(10,2)对应于DECIMAL(10,2)。

- 在PostgreSQL中,Numeric(10,2)对应于NUMERIC(10,2)。

- 在Oracle中,Numeric(10,2)对应于NUMBER(10,2)。

下面是一个使用Numeric()数据类型的例子:

from sqlalchemy import create_engine, Column, Numeric
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 创建连接引擎
engine = create_engine('mysql+pymysql://username:password@localhost:3306/database_name')

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 创建基类
Base = declarative_base()

# 定义模型类
class Product(Base):
    __tablename__ = 'products'
  
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    price = Column(Numeric(10, 2))
  
    def __init__(self, name, price):
        self.name = name
        self.price = price

# 创建表
Base.metadata.create_all(engine)

# 添加数据
product1 = Product('Product 1', 12.34)
product2 = Product('Product 2', 56.78)

session.add(product1)
session.add(product2)
session.commit()

# 查询数据
products = session.query(Product).all()
for product in products:
    print(product.name, product.price)

# 更新数据
product1.price = 9.99
session.commit()

# 删除数据
session.delete(product2)
session.commit()

# 关闭会话
session.close()

在上面的例子中,我们定义了一个Product类,它有一个name属性和一个price属性,price属性的数据类型是Numeric(10,2),这表示它可以存储最多10位数字,其中2位是小数位。

我们通过Session对象创建一个会话,并使用add()方法添加两个Product对象到数据库中。然后使用query()方法进行查询,使用commit()方法提交更改,使用delete()方法删除一个对象。

这个例子展示了如何使用Numeric()数据类型来定义一个数值列,并演示了如何进行数据的增删改查操作。