t_odm_mongo_engine.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # https://github.com/MongoEngine/mongoengine
  2. '''
  3. 真难用,完全不兼容 pydantic ,并且没有方便的 dict 转换,而且搜索语句不是人类友好的方式,是作者自己定义的操作语句,完全倒反天罡。
  4. '''
  5. from datetime import datetime
  6. from pydantic import BaseModel
  7. from typing import List, Dict, Optional,TypedDict
  8. from pymongo import MongoClient
  9. from mongoengine import *
  10. # test 数据库,没有则创建
  11. connect('test', host='sv-v2', port=27017)
  12. class Variant(EmbeddedDocument):
  13. name = StringField()
  14. price = FloatField()
  15. description = StringField()
  16. category = StringField()
  17. # 集合名称为 product
  18. class Product(Document):
  19. name = StringField()
  20. price = FloatField()
  21. description = StringField()
  22. image = StringField()
  23. brand = StringField()
  24. category = StringField()
  25. variant = ListField(EmbeddedDocumentField(Variant))
  26. def test_get_product():
  27. product = Product(
  28. name="数据线2",
  29. price=100,
  30. description="产品描述",
  31. image='123123',
  32. variant=[
  33. Variant(
  34. name="3M,蓝色",
  35. price=100,
  36. description="蓝色数据线",
  37. ),
  38. ]
  39. )
  40. return product
  41. def insert_object():
  42. product = test_get_product()
  43. product.save()
  44. def update_one():
  45. product:Product = Product.objects(name='数据线2').first()
  46. print(product.to_json())
  47. print(product.__weakref__)
  48. def main():
  49. # insert_object()
  50. update_one()
  51. if __name__ == "__main__":
  52. main()