Sqlalchemy:导入的未定义变量:元数据

时间:2013-02-15 08:49:51

标签: python sqlalchemy

在外部模块中声明基本变量时出现上述错误。 Base变量在模块db_connect.py中声明,如本文所述:How to create ForeignKey relationship across two different files

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()中突出显示了错误: Undefined variable from导入:元数据为什么会发生错误?

问题二:

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))

2 个答案:

答案 0 :(得分:0)

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

所以路径是:

  

C:\的Python \ Python27 \ LIB \站点包\ SQLAlchemy的

这对我有用。

答案 1 :(得分:0)

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