示例#1
0
    Post(title="第6篇文章", content="Hello world 3", categories=[c1, c2])

    # 查看关联的数据
    print(Category["tech"].posts)  # 这个Category["tech"]等同于Category.get("tech")
    print(Post[6].categories)

# 删除
# 调用Entity实例的.delete()方法可以删掉这条数据。
# 如果需要把相关联的数据一并删掉,需要在定义model字段的时候加上cascade_delete = True的参数。

with db_session:
    Category["tech"].delete()

# 查询PonyORM的查询方式比较魔性,和别的ORM有较大区别,这里给个简单的例子看看样子。
# 用Entity对象上的select方法,传入lambda 表达式进行查询,查了id大于2并且内容包含"world"的条目。

with db_session:
    query = Post.select(lambda p: p.post_pk > 2 and "world" in p.content)
    print(list(query))  # 将query对象转为list,触发真正的查询获取数据

# 使用另一种方式用select函数,传入一个生成器表达式作为参数,查询了以"咋地"结尾的Comment。

with db_session:
    query = select(p.content for p in Comment if p.content.endswith("咋地"))
    print(query[:])  # 另一种转list的方式
# 使用SQL直接查询。

with db_session:
    query = Category.select_by_sql("SELECT * FROM category LIMIT 1")
    print(query[:])