Python 错误 NameError:名称 '__tablename__' 未定义

问题描述 投票:0回答:1

我是 Python 新手,我需要你的帮助。我有一台 Mac 并使用 python 3。使用 SublimeText,这是我在运行代码时收到的信息==> 我收到此错误:

NameError: name '__tablename__' is not defined

提前谢谢您!!!

我的整个代码是:

from flask_sqlalchemy import SQLAlchemy
    from sqlalchemy import create_engine
    engine = create_engine('sqlite:///:memory:', echo=True)


from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()



#creare de tabela

from sqlalchemy import Column, Integer, String
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    program = Column(String)
    aka = Column(String)
    adresa = Column(String)
    city = Column(String)
    state = Column(String)
    country = Column(String)
    postalcode = Column(String)

def __repr__(self):
    return "<User(name='%s', fullname='%s', program='%s', aka='%s',adresa='%s',city='%s',country='%s',postalcode='%s',)>" %(
        self.name, self.fullname, self.program, self.aka, self.adresa, self.city, self.state, self.country,self.postalcode)

#creare de tabela
User.__tablename__
table('users', MetaData(bind=None),
    Column('id', Integer(),table=(users), primary_key=True, nullable=False),
    Column('name', String(), table=(users)),
    Column('fullname', String(), table=(users)),
    Column('program', String(), table=(users)),
    Column('aka', String(), table=(users)),
    Column('adresa', String(), table=(users)),
    Column('city', String(), table=(users)), 
    Column('state', String(), table=(user)),
    Column('country', String(), table=(users)),
    Column('postalcode', String(), table=(users), schema=None))
python error-handling sqlalchemy
1个回答
-1
投票

因为它是一个“私有变量”

[...]

__spam
形式的任何标识符(至少两个前导下划线,最多一个尾随下划线)在文本上替换为
_classname__spam
,其中 classname 是删除前导下划线的当前类名称。

在您的用例中,您可以使用

User._user__tablename__

访问它

为了避免此问题,请使用 one 前导下划线标记 varbaile,并删除两个尾随下划线。这是pep8的建议:

_single_leading_underscore
:弱“内部使用”指标。例如。 from M import * 不导入名称以下划线开头的对象。

© www.soinside.com 2019 - 2024. All rights reserved.