使用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返回插入后的条目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
#...
问题#1:
if self.db.insert(kwargs):
这是一个好的做法'在if-block的condition语句中执行insert函数?如果没有,根据返回值创建if / else语句的替代方法是什么?
问题#2:
click.echo(a_db.new(**kwargs))
将文件插入数据库的整个过程都包含在print语句中,以便能够访问insert函数的返回值。 这是一个很好的做法吗?或者有更好的方法来调用插入函数,访问返回值并打印出来吗?
提前感谢您的澄清!
答案 0 :(得分:1)
很难说什么是'良好做法',因为人们往往对他们的看法有不同的看法。
1:你没有在其他地方使用返回的值,所以只在条件语句中使用它似乎没问题。如果insert
方法引发了一些异常,你将不得不处理它,但它似乎并没有。
2:与数字1相同的答案。如果你不再使用变量,那么就可以这样了。