我想使用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',因为该表已经存在。 有人知道解决方案吗?
答案 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)