【发布时间】:2017-10-10 10:58:26
【问题描述】:
我在 postgresql 中自动生成表,模型是使用 sqlacodegen 使用列表中的名称自动生成的。
有些名称是非 ASCII 字符。对于名称????aussieBabe????,它创建了一个表????aussieBabe????_index,其sqlAlchemy 模型为????aussieBabe????Index。但是当我尝试导入这些模型进行查询时,我得到以下错误。
line 147
class ????aussieBabe????Index(Base):
^
SyntaxError: invalid character in identifier
我认为这可以通过在创建表或限制类名之前删除无效字符来解决。我想限制sqlacodegen 生成的类名,我该如何实现呢?或者我可以为代码设置 Unicode 编码吗?
【问题讨论】:
-
将错误发布到问题跟踪器!
-
如果您等不及修复错误,将
_re_invalid_identifier更改为github.com/agronholm/sqlacodegen/blob/master/sqlacodegen/… 可能会有用;或者甚至可以在 Python2 下运行它来完全避免标识符中的 unicode 字符。 -
将发布错误报告,现在我将按照@snakecharmerb 的建议更改
_re_invalid_identifier -
@Harwee 实际上,你确定你运行的是同一个版本吗?正则表达式
\W匹配????所以这些应该被删除... -
是的,那些应该手动删除,但是我有太多的名字有这样的问题,我需要创建一个映射来动态指向新的类,但无论如何 sqlacodegen 应该至少引发错误而不是写无效我猜是
_re_invalid_identifier处理的字符。
标签: python postgresql sqlalchemy sqlacodegen