0

使用 tinydb 我有一个用于数据库操作的对象,如下所示:

#database.py 
class DataBase(object):
    """CRUD access to database."""

    def __init__(self):
        """Initialize database."""
        self.db = TinyDB('/db.json')

    def new(self, **kwargs):
        """Add a new entry to the database."""
        if self.db.insert(kwargs): # 1
            return 'New item added to the database.'
        else:
            return 'Item NOT added to the database.'

tinydb 的方法 'insert' 在插入后返回条目的 id,参见 #1。所以我使用这个效果返回一个成功/失败消息,当使用 print() 调用函数时可以显示该消息:

#main.py
#...
@entry.command('new')
@click.argument('first_arg', type=str)
@click.argument('second_arg', type=str)
def entry_new(**kwargs):
    """Create a new entry."""
    if kwargs is not None:
        click.echo(a_db.new(**kwargs)) # 2
#...

问题一:

if self.db.insert(kwargs):

在 if 块的条件语句中执行插入函数是“好习惯”吗?如果不是,有什么替代方法可以根据返回值创建 if/else 语句?

问题2:

click.echo(a_db.new(**kwargs))

将文件插入数据库的整个过程都包含在打印语句中,以便能够访问插入函数的返回值。这是“好习惯”还是有更好的方法来调用插入函数、访问返回值并将其打印出来?

提前感谢您的澄清!

4

1 回答 1

1

很难说什么是“好的做法”,因为人们经常对自己的做法有不同的看法。

1:您没有在其他任何地方使用返回值,因此只在条件语句中使用它似乎没问题。如果该insert方法引发了一些异常,您将不得不处理它,但它似乎没有。

2:和1号一样的答案。如果你不再使用变量,那么这样就可以了。

于 2017-02-07T13:20:08.663 回答