title: Flask SQLAlchemy: AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema'
body: <p>all
  I have a question on a Flask with SQL-Alchemy</p>
  
  <p>I am now implementing the Poll app using Flask.
  During the modeling, I'm facing the problem with many to many relationship. Based on the tutorial on Flask official website, I followed it, but I got a problem when I tried to use it.</p>
  
  <p>Here is the models.py code</p>
  
  <pre><code>from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Table, PrimaryKeyConstraint
  from sqlalchemy.orm import relationship
  from database import Base
  from datetime import datetime
  
  
  respondents_identifier = Table('respondents_identifier',
  
                                 Column('user_id', Integer, ForeignKey('users.id')),
                                 Column('poll_id', Integer, ForeignKey('polls.id')),
                                 )
  
  
  class User(Base):
      __tablename__ = 'user'
      id = Column(Integer, primary_key=True)
      name = Column(String(20))
      name_string = Column(String(100), unique=True)
  
      def __init__(self, name=None, name_string=None):
          self.name = name
          self.name_string = name_string
  
      def __repr__(self):
          return '&lt;User %r %r&gt;' % self.name, self.nameString
  
  
  class Poll(Base):
      __tablename__ = 'poll'
      id = Column(Integer, primary_key=True)
      subject = Column(String(50))
      question_statement = Column(String(100))
      num_questions = Column(Integer)  # 응답지 개수
      total_participant = Column(Integer)  # 총 참여자 수
      questions = relationship('Question', backref='Poll')
      comments = relationship('Comment', backref='Poll')
      respondents = relationship("User",
                                 secondary=respondents_identifier)
  
      def __init__(self, subject=None, question_statement=None, num_questions=2):
          self.subject = subject
          self.question_statement = question_statement
          self.num_questions = num_questions
          self.total_participant = 0
  
  
  class Question(Base):
      __tablename__ = 'question'
      id = Column(Integer, primary_key=True)
      choice_num = Column(Integer)
      answer_description = Column(String(50))
      poll_id = Column(Integer, ForeignKey('poll.id'))
      selected_num = Column(Integer)  # 선택된 수
  
      def __init__(self, choice_num, answer_description=None):
          self.choice_num = choice_num
          self.answer_description = answer_description
          self.selected_num = 0
  
      def __repr__(self):
          return '&lt;Poll %d %r&gt;' % self.answer_num, self.answer_description
  
      def set_poll_id(self, poll):
          self.poll_id = poll.id
  
  
  class Comment(Base):
      __tablename__ = 'comment'
      id = Column(Integer, primary_key=True)
      comment_content = (String(200))
      user_name = (String(20))
      poll_id = Column(Integer, ForeignKey('poll.id'))
      comment_time = Column(DateTime)
  
      def __init__(self, user_name, comment_content):
          self.user_name = user_name
          self.comment_content = comment_content
          self.comment_time = datetime.now()
  </code></pre>
  
  <p>and, this is my database.py outside of app directory, this is in the root directory of my project.</p>
  
  <pre><code>from sqlalchemy import create_engine
  from sqlalchemy.orm import scoped_session, sessionmaker
  from sqlalchemy.ext.declarative import declarative_base
  
  engine = create_engine('sqlite:////tmp/test.db', convert_unicode=True)
  db_session = scoped_session(sessionmaker(autocommit=False,
                                           autoflush=False,
                                           bind=engine))
  Base = declarative_base()
  Base.query = db_session.query_property()
  
  
  def init_db():
      # import all modules here that might define models so that
      # they will be registered properly on the metadata.  Otherwise
      # you will have to import them first before calling init_db()
      import HotOpinion.models
      Base.metadata.create_all(bind=engine)
  </code></pre>
  
  <p>You can notify that, database.py is very similar to given example code on official website.</p>
  
  <p>Here is the Stacktrace of the error.</p>
  
  <pre><code>/Users/junojunho/.pyenv/versions/hotopinion/bin/python /Users/junojunho/Documents/github/HotOpinion/runserver.py
  Traceback (most recent call last):
    File "/Users/junojunho/Documents/github/HotOpinion/runserver.py", line 15, in &lt;module&gt;
      init_db()
    File "/Users/junojunho/Documents/github/HotOpinion/database.py", line 17, in init_db
      import HotOpinion.models
    File "/Users/junojunho/Documents/github/HotOpinion/HotOpinion/models.py", line 11, in &lt;module&gt;
      Column('poll_id', Integer, ForeignKey('polls.id')),
    File "/Users/junojunho/.pyenv/versions/hotopinion/lib/python2.7/site-packages/sqlalchemy/sql/schema.py", line 374, in __new__
      schema = metadata.schema
    File "/Users/junojunho/.pyenv/versions/hotopinion/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 735, in __getattr__
      key)
  AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema'
  
  Process finished with exit code 1
  </code></pre>
  
  <p>How do I solve it? I don' know where I can start to fix it.
  If I remove the identifier part, and the relationship between User, and Poll, everything works fine. the problem is that part.</p>