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()数据类型来定义一个数值列,并演示了如何进行数据的增删改查操作。
