Python Pony Orm测试表是否为空

时间:2018-08-01 14:30:29

标签: 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文档中找不到任何有关检查表是否为空的信息。

if Names is None:

上面的行给我'False',因为该表已经存在。 有人知道解决方案吗?

1 个答案:

答案 0 :(得分:2)

最简单的方法是编写:

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)