當我在外部模塊中聲明基本變量時,出現上述錯誤。基礎變量是一個模塊db_connect.py聲明的指示在這個崗位:How to create ForeignKey relationship across two different filesSqlalchemy:來自導入的未定義變量:元數據
在db_connect.py我已經宣佈了follwing:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
Engine = create_engine('postgresql://postgres:[email protected]: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))
難道這些警告顯示出來只在Eclipse?另外,您是否檢查過數據庫以確保正在創建外鍵? – 2013-02-28 05:35:13
@CarlosV是的,它們只出現在Eclipse中。是的,外鍵正在工作。在問題1中,eclipse是否無法檢測到我在文件頂部完成的導入操作?但是,這怎麼可能,因爲代碼仍然運行? – lukik 2013-02-28 14:23:14
我猜測* Eclipse正在進行某種形式的自省並且無法檢測到'declarative_base()'返回的是什麼類型的對象?對不起,我不能有更多的幫助。 – 2013-02-28 16:15:25