Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';RelationshipProperty';对象没有属性';c';炼金术中的错误_Python_Orm_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python ';RelationshipProperty';对象没有属性';c';炼金术中的错误

Python ';RelationshipProperty';对象没有属性';c';炼金术中的错误,python,orm,sqlalchemy,flask-sqlalchemy,Python,Orm,Sqlalchemy,Flask Sqlalchemy,我在为遗留的MSSQL数据库实现SQLalchemy时遇到了很多麻烦。它是一个很大的现有数据库,所以我想用它来为我生成文件,因为使用autoload来反映数据库需要很长时间 第一个问题是sqlautocode似乎不再适用于SQLalchemy 0.8。我仍然有一个早期版本的输出,所以我想我会使用它,只是为了测试 现在sqlautocode输出“”,这其实不是问题,但每当我尝试使用外键时,“RelationshipProperty”对象没有属性“c”。SQLalchemy库深处的某个错误 所以接下

我在为遗留的MSSQL数据库实现SQLalchemy时遇到了很多麻烦。它是一个很大的现有数据库,所以我想用它来为我生成文件,因为使用autoload来反映数据库需要很长时间

第一个问题是sqlautocode似乎不再适用于SQLalchemy 0.8。我仍然有一个早期版本的输出,所以我想我会使用它,只是为了测试

现在sqlautocode输出“”,这其实不是问题,但每当我尝试使用外键时,
“RelationshipProperty”对象没有属性“c”
。SQLalchemy库深处的某个错误

所以接下来,我尝试跳过sqlautocode,自己编写类和关系,使用SQLalchemy 0.8。我使用了两个示例表,得到了完全相同的错误。然后我注释掉了大部分的列,所有的关系,我仍然得到了错误

下面是我的代码:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, ForeignKey
from sqlalchemy.orm import relationship, backref
from sqlalchemy.dialects.mssql import *

Base = declarative_base()


class PeopleMemberhip(Base):
    __tablename__ = 'people_memberships'

    ppl_mshp_id = Column(VARCHAR(length=36), primary_key=True, nullable=False)
    ppl_mshp_startdate = Column(DATETIME())
    ppl_mshp_enddate = Column(DATETIME())
    # ppl_mshp_pmsd_id = Column(VARCHAR(length=36), ForeignKey('paymentschedules.pmsd_id'))

    # paymentschedule = relationship("PaymentSchedule", backref=backref('people_memberships'))

    def __repr__(self):
        return "<people_membership('%s','%s')>" % (self.ppl_mshp_id, self.ppl_mshp_startdate)


class PaymentSchedule(Base):
    __tablename__ = 'paymentschedules'

    pmsd_id = Column(VARCHAR(length=36), primary_key=True, nullable=False)
    pmsd_name = Column(NVARCHAR(length=60))
    pmsd_startdate = Column(DATETIME())
    pmsd_enddate = Column(DATETIME())

    # paymentschedule = relationship("PaymentSchedule", backref=backref('people_memberships'))

    def __repr__(self):
        return "<paymentschedule('%s','%s')>" % (self.pmsd_id, self.pmsd_name)
来自sqlalchemy.ext.declarative import declarative\u base
从sqlalchemy导入列中,选择ForeignKey
从sqlalchemy.orm导入关系,backref
从sqlalchemy.dialogs.mssql导入*
Base=声明性_Base()
班级成员资格(基本):
__tablename_uuu=‘人员成员资格’
ppl\u mshp\u id=Column(VARCHAR(长度=36),primary\u key=True,nullable=False)
ppl\u mshp\u startdate=列(DATETIME())
ppl\u mshp\u enddate=列(DATETIME())
#ppl\u mshp\u pmsd\u id=列(VARCHAR(长度=36),ForeignKey('paymentschedules.pmsd\u id'))
#paymentschedule=关系(“paymentschedule”,backref=backref(“人员成员身份”))
定义报告(自我):
返回“”%(self.ppl\u mshp\u id,self.ppl\u mshp\u startdate)
班级工资表(基数):
__tablename_uu='paymentschedules'
pmsd_id=Column(VARCHAR(length=36),primary_key=True,nullable=False)
pmsd_name=列(NVARCHAR(长度=60))
pmsd_startdate=列(DATETIME())
pmsd_enddate=列(DATETIME())
#paymentschedule=关系(“paymentschedule”,backref=backref(“人员成员身份”))
定义报告(自我):
返回“”%(self.pmsd\u id,self.pmsd\u名称)
以及由此产生的错误:

Traceback (most recent call last):
  File "C:\Program Files (x86)\JetBrains\PyCharm 2.7\helpers\pydev\pydevd.py", line 1472, in <module>
    debugger.run(setup['file'], None, None)
  File "C:\Program Files (x86)\JetBrains\PyCharm 2.7\helpers\pydev\pydevd.py", line 1116, in run
    pydev_imports.execfile(file, globals, locals) #execute the script
  File "C:/Users/erik/workspace/flasktest/test.py", line 16, in <module>
    contract = db.session.query(PeopleMemberhip).filter_by(ppl_mshp_id='98ABD7E9-4CFF-4F7B-8537-8E46FD5C79D5').one()
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\scoping.py", line 149, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\session.py", line 1105, in query
    return self._query_cls(entities, self, **kwargs)
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\query.py", line 115, in __init__
    self._set_entities(entities)
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\query.py", line 124, in _set_entities
    self._set_entity_selectables(self._entities)
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\query.py", line 157, in _set_entity_selectables
    ent.setup_entity(*d[entity])
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\query.py", line 2744, in setup_entity
    self._with_polymorphic = ext_info.with_polymorphic_mappers
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\util\langhelpers.py", line 582, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\mapper.py", line 1425, in _with_polymorphic_mappers
    configure_mappers()
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\mapper.py", line 2106, in configure_mappers
    mapper._post_configure_properties()
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\mapper.py", line 1242, in _post_configure_properties
    prop.init()
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\interfaces.py", line 231, in init
    self.do_init()
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\properties.py", line 1028, in do_init
    self._setup_join_conditions()
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\properties.py", line 1102, in _setup_join_conditions
    can_be_synced_fn=self._columns_are_mapped
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\relationships.py", line 115, in __init__
    self._annotate_fks()
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\relationships.py", line 311, in _annotate_fks
    self._annotate_present_fks()
  File "C:\Users\erik\workspace\flasktest\lib\site-packages\sqlalchemy\orm\relationships.py", line 331, in _annotate_present_fks
    secondarycols = util.column_set(self.secondary.c)
AttributeError: 'RelationshipProperty' object has no attribute 'c'
回溯(最近一次呼叫最后一次):
文件“C:\Program Files(x86)\JetBrains\PyCharm 2.7\helpers\pydev\pydevd.py”,第1472行,在
运行(安装程序['file'],无,无)
文件“C:\Program Files(x86)\JetBrains\PyCharm 2.7\helpers\pydev\pydevd.py”,第1116行,正在运行
pydev_imports.execfile(文件、全局、局部)#执行脚本
文件“C:/Users/erik/workspace/flasktest/test.py”,第16行,在
contract=db.session.query(peoplemembership).filter_by(ppl_mshp_id='98ABD7E9-4CFF-4F7B-8537-8E46FD5C79D5').one()
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\scoping.py”,第149行,在do中
返回getattr(self.registry(),name)(*args,**kwargs)
查询中第1105行的文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\session.py”
返回self.\u查询\u cls(实体、self、**kwargs)
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\query.py”,第115行,在\uuu init中__
自组实体(实体)
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\query.py”,第124行,位于集合实体中
self.\u设置\u实体\u可选择项(self.\u实体)
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\query.py”,第157行,位于\u set\u entity\u selectables中
ent.setup\U实体(*d[实体])
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\query.py”,第2744行,位于安装实体中
self._with_polympic=ext_info.with_polympic_mappers
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\util\langhelpers.py”,第582行,在__
obj.\uuuuu dict\uuuuu[self.\uuuuuuuuuuu name\uuuuuuuuu]=结果=self.fget(obj)
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\mapper.py”,第1425行,在带有多态映射器的映射器中
配置映射器()
配置映射器中的文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\mapper.py”,第2106行
映射程序。_post_configure_properties()
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\mapper.py”,第1242行,位于\u post\u configure\u properties中
prop.init()
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\interfaces.py”,第231行,在init中
self.do_init()
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\properties.py”,第1028行,在do\u init中
self.\u设置\u连接\u条件()
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\properties.py”,第1102行,在设置加入条件中
是否可以\u同步\u fn=self.\u列\u已映射
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\relationships.py”,第115行,在\uuu init中__
自我注释(fks)
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\relationships.py”,第311行,在注释中
自我。_注释_呈现_fks()
文件“C:\Users\erik\workspace\flasktest\lib\site packages\sqlalchemy\orm\relationships.py”,第331行,在注释中
secondarycols=util.column\u set(self.secondary.c)
AttributeError:“RelationshipProperty”对象没有属性“c”
我真的不知所措,非常感谢对这个错误的任何帮助,但如果有人能建议一种不同的方法,使SQLalchemy能够与我们遗留的MSSQL数据库一起工作,这也是一种解决方案

正如我所说的,sqlautocode似乎不再工作了,但可能是我用错了,或者可能有一个我不知道的替代工具


埃里克

好了,伙计们,我自己解决了

我处理了几个文件,其中包含表定义(sqlautocode的输出)。其中一个名为“database.py”,另一个名为“model.py”,最后一个名为“ORM.py”