Python SQLAlchemy: AttributeError: Ni el objeto ‘Columna’ ni el objeto ‘Comparador’ tienen un atributo ‘esquema’

Intenté crear una nueva base de datos en mi proyecto, pero obtuve este error cuando ejecuté el script, tengo otro proyecto que usa una definición similar, funcionó antes, pero ahora ahora recibe el mismo error. Estoy usando Python 2.7.8 y la versión del módulo SQLAlchemy es 0.9.8. Por cierto, un proyecto que utiliza Flask-SQLAlchemy, funciona bien. Estoy confundido. La información de rastreo es la siguiente:

Traceback (most recent call last): File "D:/Projects/OO-IM/db_create.py", line 4, in  from models import Base File "D:\Projects\OO-IM\models.py", line 15, in  Column('followed_id', Integer(), ForeignKey('user.id')) File "C:\Python27\lib\site-packages\sqlalchemy\sql\schema.py", line 369, in __new__ schema = metadata.schema File "C:\Python27\lib\site-packages\sqlalchemy\sql\elements.py", line 662, in __getattr__ key) AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema' from sqlalchemy import create_engine, Column, String, Integer, Text, DateTime, Boolean, ForeignKey, Table from sqlalchemy.orm import sessionmaker, relationship, backref from sqlalchemy.ext.declarative import declarative_base SQLALCHEMY_DATABASE_URI = "mysql://root:mysqladmin@localhost:3306/oo_im?charset=utf8" Base = declarative_base() # TODO:AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema' friendships = Table('friendships', Column('follower_id', Integer(), ForeignKey('user.id')), Column('followed_id', Integer(), ForeignKey('user.id')) ) class User(Base): __tablename__ = 'user' id = Column(Integer(), primary_key=True) account = Column(String(32), unique=True, nullable=False) password = Column(String(32), nullable=False) followed = relationship("User", secondary=friendships, primaryjoin=(friendships.c.follower_id == id), secondaryjoin=(friendships.c.followed_id == id), backref=backref("followers", lazy="dynamic"), lazy="dynamic") def __init__(self, account, password, followed=None): self.account = account self.password = password if followed: for user in followed: self.follow(user) def follow(self, user): if not self.is_following(user): self.followed.append(user) return self def unfollow(self, user): if self.is_following(user): self.followed.remove(user) return self def is_following(self, user): return self.followed.filter(friendships.c.followed_id == user.id).count() > 0 class ChatLog(Base): __tablename__ = 'chatlog' id = Column(Integer(), primary_key=True) sender_id = Column(Integer(), ForeignKey('user.id'), nullable=False) receiver_id = Column(Integer(), ForeignKey('user.id'), nullable=False) send_time = Column(DateTime(), nullable=False) received = Column(Boolean(), default=False) content = Column(Text(), nullable=False) engine = create_engine(SQLALCHEMY_DATABASE_URI, convert_unicode=True) DBSession = sessionmaker(bind=engine) 

La definición de la tabla debe ser:

 friendships = Table('friendships', Base.metadata, Column('follower_id', Integer(), ForeignKey('user.id')), Column('followed_id', Integer(), ForeignKey('user.id')) ) 

Al definir tablas utilizando la syntax declarativa, los metadatos se heredan a través de la statement de clase de Base, es decir,

 Base = declarative_base() class ChatLog(Base) 

pero, al definir tablas utilizando la syntax de la tabla anterior, los metadatos deben especificarse explícitamente.

Tuve el mismo error porque escribí la Column con una c minúscula. Debe ser Column .