1

当我在外部模块中声明基本变量时出现上述错误。基本变量在模块 db_connect.py 中声明,如本文所述:如何跨两个不同文件创建 ForeignKey 关系

db_connect.py中,我声明了以下内容:

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
Engine = create_engine('postgresql://postgres:pass@server:5432/mydb')
Base = declarative_base()

data_template.py我有以下内容:

from db_connect import Engine, Base

class DataTemplate (Base):
    __tablename__ = 'data_template'
    id = Column(Integer(5), primary_key=True, autoincrement = True)
    version = Column(String(3), nullable = False)
    specification = Column(String(1), nullable = False)
    __table_args__ = (UniqueConstraint("version", "specification"), )

Base.metadata.create_all()

问题一:

有了上面的内容,创建的表很好,但是我在data_template.py 中获得了元数据: Base.metadata.create_all()突出显示了错误:导入的未定义变量:元数据为什么会发生该错误?

问题二:

load_file.py我必须从data_template.py模块导入 DataTemplateFile 类。如果我不执行此导入,我会收到错误消息

sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'load_file.data_template_file_id' could not find table 'data_template_file' with which to generate a foreign key to target column 'id'

但是,当我按如下方式导入时,它可以工作并创建表,但我在 Eclipse 中收到“警告”指示,表明 DataTemplateFile 导入未使用。但是,如果我不导入它,则代码将失败,如上文所述。

from data_template import DataTemplateFile

class LoadFile (Base):
    __tablename__ = "load_file"
    id = Column(Integer(10), primary_key = True)
    file_name = Column(String(250), nullable = False, unique = True)
    data_template_file_id = Column(Integer, ForeignKey('data_template_file.id'), nullable = False)
    loadfile = relationship("DataTemplateFile",backref=backref('LoadFile', order_by=id))
4

2 回答 2

0

实际上我有同样的问题。我通过进入 site-packages 文件夹并将 sqlalchemy 文件夹提升了一个级别来解决它。

所以路径是:

C:\Python\Python27\Lib\site-packages\sqlalchemy

这对我有用。

于 2013-03-07T16:56:50.220 回答
0

您必须将 flask.ext 添加到 Forced Builtins

于 2016-01-21T10:07:28.717 回答