不想重复定义或拷贝Model定义,用ORM方式操作已经存在的数据表(table的反射)

1,建立本地与数据库表的映射

引用库

from sqlalchemy import  create_engine, Table, MetaData
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

建立与数据库的连接,以及表的映射

# 创建连接数据库的engine
engine = create_engine('mysql+pymysql://username:password@host:port/db_name?charset=utf8', convert_unicode=True, echo=False)
#创建model的基类
Base = declarative_base()
#建立映射
metadata = MetaData(bind=engine)

#讲数据库对应的表与本地什么的class 建立映射关系,(下面 product_price 是数据库中表的名字)
class ProductPrice(Base):
    __table__ = Table('product_price', metadata, autoload=True)

这样直接操作ProductPrice类就和其他完整定义的model一样。如果有特殊的column,有可能映射无法完全还原,这时候再通过Column('columnname', datatype) 附加定义

2,操作数据表

#建立数据库连接
Session = sessionmaker(bind=engine)
session = Session()

#查询、修改数据
price_obj = session.query(ProductPrice).filter_by(product='***').first()
price_obj.price = 16.15
session.commit()

#添加数据
price_obj = ProductPrice(...)
session.add(price_obj)
session.commit()

#删除数据
price_obj = session.query(ProductPrice).filter_by(product='***').first()
session.delete(price_obj)
session.commit()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值