Projemde yeni bir veritabanı oluşturmayı denedim ancak betiği çalıştırdığımda bu hatayı aldım, başka bir projem var. benzer bir tanımlama, daha önce çalıştı, ama şimdi aynı hatayı şimdi al. Python 2.7.8 kullanıyorum ve SQLAlchemy modülünün sürümü 0.9.8. Bu arada, bir proje Flask-SQLAlchemy kullandı, iyi çalışıyor. Kafam karıştı. traceback bilgileri aşağıdaki gibidir:Python SQLAlchemy : AttributeError: Ne 'Column' nesnesinde ne de 'Comparatorer' nesnesinin 'schema' özniteliği var 'şema'
Traceback (most recent call last):
File "D:/Projects/OO-IM/db_create.py", line 4, in <module>
from models import Base
File "D:\Projects\OO-IM\models.py", line 15, in <module>
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:[email protected]: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)
Bu hatayı söylediğinde, "TODO:" yorumunuzdaki hatayı mı kaynaklıyorsunuz? – clearlight
Sadece bir yorum, hata sonraki satırda yükseltildi. – earlzo
'TODO'unuzun hemen altında:' Tablo (...) 'a yapılan bir çağrı, eksik olduğunuz ikinci bir parametre olarak bir MetaData' örneğine sahip olmalıdır. – van