Python Pony Orm 测试表是否为空

标签 python database ponyorm

我想使用 pony orm 测试一张表是否为空。

起初我连接到数据库并说生成映射。 我在这里使用“名称”表作为示例并连接到 postgres 数据库

from pony.orm import *

class Names(db.Entity):
    name = Required(str)


@db_session
def populate_names(name_list):
    for name_element in name_list:
        db.insert("Names", name=name_element)


@db_session
def test_empty():
    temp = False
    # if Names is empty, set temp = True
    if Names ... :
        temp = True

    return temp


if __name__ == "__main__":
    characters = ['James', 'Elisabeth', 'Paul', ...]

    db = Database()
    db.bind(provider='postgres', user='', password='', host='', database='')

    # generate_mappings already creates empty tables
    db.generate_mapping(create_tables=True)

    empty = test_empty()

    if empty is True:
        populate_names(characters)

我在 Pony Docs 中找不到任何关于检查表是否为空的信息。

if Names is None:

上面一行给出了“False”,因为该表已经存在。 有谁知道解决方案吗?

最佳答案

最简单的方法是这样写:

with db_session:
    if not Names.select().exists():
        populate_names()

或者,您可以将测试放在 populate_my_entity() 中:

@db_session
def populate_names(name_list):
    if Names.select().exists():
        return
    for name_element in name_list:
        db.insert("Names", name=name_element)

关于Python Pony Orm 测试表是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51635940/

相关文章:

python - 当它似乎是从一个实例继承时,如何将类放在它自己的文件中?

python - 在 Keras 中向后传播?

python - AWS-Lambda 函数的当前日期/时间问题

python - 在 python 中使用 csv 模块读取 .xlsx

php - 如何在JavaScript函数中激活PHP文件

sql - 组合对象和属性

在对象销毁之前清理 Java 资源

python - 使用来自python的neo4J(服务器)和交易

python - PonyORM:在不知道哪些项目已经存在的情况下,向小马数据库添加新项目的最有效方法是什么?

python - 如何在 ponyorm 中进行行计数? Python