我目前正在使用web2py 2.2.1的项目,我们有一个我们需要连接的遗留数据库。问题是为这个数据库做了DDL的人,用CamelCase命名所有列(我知道标准是snake_case)。
因此,我使用Mariano Reingart制作的extract_pgsql_models.py提取了所有模型而没有任何问题。这是一个例子(当我意识到这个问题时我正在使用的实际模型):
migrate = False
db.define_table('tracks',
Field('id', type='id'),
Field('hash', type='string', length=40, unique=True),
Field('size', type='integer', unique=True),
Field('duration', type='integer'),
Field('quality', type='double'),
Field('creationDate', type='datetime'), # CamelCase Here
Field('expirationDate', type='datetime'), # and here
Field('scheduledDate', type='datetime'), # and here too
Field('dailyRepetitions', type='integer'), #another one here
Field('tags', type='text'),
Field('active', type='boolean', default=True),
Field('trackType', type='reference track_types', ondelete='RESTRICT'), # here
Field('clientType', type='reference client_types', ondelete='RESTRICT'), # here
Field('relatedClient', type='reference clients', ondelete='CASCADE'), #here
Field('advertiser', type='reference advertisers', ondelete='CASCADE'),
migrate=migrate)
然后,我在我的控制器中执行了以下操作:
...
rows = db(db.tracks.id > 0).select()
...
并收到以下错误:
('ERROR', '42703', 'column tracks.creationdate does not exist')
因此,web2py也会降低我的列名称。
我在postgres中选择了一个选项,通常情况下它不起作用
SELECT creationDate FROM tracks;
但是通过以下安排它确实:
SELECT "creationDate" FROM tracks;
我想知道是否有任何解决方法。
非常感谢。