在peewee中使用python关键字作为模型字段

时间:2014-07-17 09:45:26

标签: python python-3.x keyword reserved-words peewee

我正在使用python3中的peewee为现有数据库构建ORM。

现在我在一个表中遇到问题,有一个名为import的列,我必须将其作为一个类引入。属性。当然,这不是那么简单,因为它是python语言中的关键字。有没有办法以另一种方式更改字段的名称?我无法更改列的名称,因为它会在其他系统上产生大量副作用。

2 个答案:

答案 0 :(得分:3)

使用db_column属性:

class MyModel(Model):
    import_ = CharField(db_column='import')

答案 1 :(得分:1)

可以创建名为import的类属性。缺点是您始终必须以编程方式访问它:

In [1]: class Test(object):
   ...:     locals()['import'] = 1
   ...:     

In [2]: getattr(Test, 'import')
Out[2]: 1

In [3]: setattr(Test, 'import', 2)

In [4]: getattr(Test, 'import')
Out[4]: 2

您可以使用此类的自定义元类隐藏对getattrsetattr的访问,并添加名为@property的{​​{1}},它将修改{{1}的值}}。因此,您可以在python代码中使用import_import属性将自动同步。

或者,您只需使用定义自定义import_的元类,它将以您想要的任何方式处理import属性。