awesome-python3-webapp icon indicating copy to clipboard operation
awesome-python3-webapp copied to clipboard

Day3 orm.py Undefined variable 'StandardError'

Open pretendhigh opened this issue 5 years ago • 2 comments

python 版本 Python 3.7.3 vscode 中显示 orm.py 报错: Undefined variable 'StandardError' class ModelMetaclass(type):

def __new__(cls, name, bases, attrs):
    if name=='Model':
        return type.__new__(cls, name, bases, attrs)
    tableName = attrs.get('__table__', None) or name
    logging.info('found model: %s (table: %s)' % (name, tableName))
    mappings = dict()
    fields = []
    primaryKey = None
    for k, v in attrs.items():
        if isinstance(v, Field):
            logging.info('  found mapping: %s ==> %s' % (k, v))
            mappings[k] = v
            if v.primary_key:
                # 找到主键:
                if primaryKey:
                    raise StandardError('Duplicate primary key for field: %s' % k)

stackoverflow 中有个回答, "exception StandardError which was removed in Python 3.",是这样的吗?

pretendhigh avatar Jan 11 '20 02:01 pretendhigh

The StandardError class is removed in Python 3. It was the base class for built-in exceptions, and it proved to be an unnecessary link in almost any exception’s inheritance chain.

The recommended fixer will replace all uses of StandardError with Exception. Review the result to check if this is correct.

Some code might rely on the name of an exception class, or on exceptions not derived from StandardError, or otherwise handle StandardError specially. You’ll need to handle these casses manually.

fgetwewr avatar May 12 '20 09:05 fgetwewr

在Python 3里,StandardError已经被取消了,使用Exception替代。

xieyupengzZ avatar Aug 27 '20 10:08 xieyupengzZ