Skip to content

Latest commit

 

History

History
53 lines (42 loc) · 1.43 KB

3.DML书写规范.md

File metadata and controls

53 lines (42 loc) · 1.43 KB

DML书写规范

1.INSERT

  • 单条INSERT
xxx_name = 'test1'
obj = Xxx(xxx_type=Xxx.XxxTypeEnum.TYPE_THREE.value, xxx_name=xxx_name, xxx_name_bin=xxx_name)
with db.session.begin():
    db.session.add(obj)
  • 多条INSERT
    • 推荐使用 db.session.bulk_save_objects(objects: Sequence[object])
      • objects: 参数说明要求返回一个序列,实际上源码中要求 Iterable[object]
      • 对应mysql batch-insert
xxx_name_list = ['a', 'b', 'c', 'd']
object_gen = (
    Xxx(xxx_type=Xxx.XxxTypeEnum.TYPE_THREE.value, 
        xxx_name=xxx_name, xxx_name_bin=xxx_name) 
    for xxx_name in xxx_name_list)
with db.session.begin():
    db.session.bulk_save_objects(object_gen)

2.UPDATE

  • update(values, synchronize_session=False)
    • values: dict
      • 更新的数据字典
    • synchronize_session: Literal['evaluate', 'fetch', False] = 'evaluate'
      • 推荐设置False
# 返回影响的行数
db.session.query(Xxx).filter(Xxx.xxx_id == 'a872e3f879d13e799acf7ef724eaee21'). \
    update({Xxx.xxx_name: 'test11', Xxx.xxx_price: Xxx.xxx_price + '22'}, synchronize_session=False)

"""实际执行SQL
UPDATE t_xxx
SET xxx_name = 'test11'
	,xxx_price = (t_xxx.xxx_price + '22')
	,update_time = '2021-03-13 10:35:38.610065'
WHERE t_xxx.xxx_id = 'a872e3f879d13e799acf7ef724eaee21';
"""

3.DELETE

  • 禁止使用