我正在試圖做一個數據庫插入,並有一個約有二十行的表。插入看起來像這樣:DRY版本的python if語句
if not title.name:
title.name = data['title']
if not title.synopsis:
title.synopsis = data['synopsis']
...
基本上,我更新行如果它們不存在每個數據庫列。
什麼是更乾淨,更有效的方式來做到這一點?
我正在試圖做一個數據庫插入,並有一個約有二十行的表。插入看起來像這樣:DRY版本的python if語句
if not title.name:
title.name = data['title']
if not title.synopsis:
title.synopsis = data['synopsis']
...
基本上,我更新行如果它們不存在每個數據庫列。
什麼是更乾淨,更有效的方式來做到這一點?
for column in ('name', 'synopsis', 'something', 'other'):
if not getattr(title, column):
setattr(title, column, data[column])
您可以使用or
:
title.name = title.name or data['title']
title.synopsis = title.synopsis or data['synopsis']
或者你也可以動態地做到這一點:
for attr in data:
if not getattr(title, attr):
setattr(title, attr, data[attr])
使用getattr
和setattr
功能:
for attribute in ['title', 'synopsis']:
if not getattr(title, attribute):
setattr(title, attribute, data[atribute])
你可以閱讀更多關於他們here。
你應該檢查是否hasattr(標題,列) – 2013-02-17 23:05:44
@ manu-fatto:我正在遵循問題中的邏輯。 – 2013-02-17 23:07:06