Peewee 列名中破折号的转换

Peewee 列名中破折号的转换,peewee,Peewee,我必须处理一个包含名称中带有破折号的列的数据库,例如a-name。使用peewee转换表时,它会将其转换为非法字符,python会抱怨运算符放错了位置 对于包含两列的表,id和a-name,结果将是 来自peewee导入的* database=MySQLDatabase('databasename',**{'password':'pwd','host':'ip','user':'username'}) 类BaseModel(模型): 类元: 数据库=数据库 类ATable(基本模型): id=P

我必须处理一个包含名称中带有破折号的列的数据库,例如a-name。使用peewee转换表时,它会将其转换为非法字符,python会抱怨运算符放错了位置

对于包含两列的表,ida-name,结果将是

来自peewee导入的
*
database=MySQLDatabase('databasename',**{'password':'pwd','host':'ip','user':'username'})
类BaseModel(模型):
类元:
数据库=数据库
类ATable(基本模型):
id=PrimaryKeyField()
a-name=CharField()
类元:
db_table='aTable'
我找到了一个临时解决办法,将破折号改为下划线,并使用可选参数db\u列,如

a\u name=CharField(db\u column='a-name')
由于我不想每次从数据库服务器下载模型时都进行手动更改,因此是否存在此问题的另一种可能性

我应该补充一点,我对数据库服务器没有控制权,我只有一个具有只读权限的帐户

您好

Luc

a_name=CharField(db_column='a-name')

这是解决问题的正确方法。Python不允许在标识符中使用破折号,因此如果列使用破折号,请显式指定列名,并为列使用一个好的名称

我想你也可以考虑修改playhouse.reflection.Introspector.make\u column\u name方法