2014-05-20 51 views
10

我正在使用具有自動映射功能的SQL Alchemy v(0.9.1)。這使我可以自動創建類和關係。 http://docs.sqlalchemy.org/en/rel_0_9/orm/extensions/automap.htmlSQLAlchemy Automap不爲沒有主鍵的表創建類

我遇到的問題是,當使用automap_base時,我看到並非所有在metadata.tables列表中可用的表都被映射。

準備時,有沒有錯誤,但我打電話automap_base()後,我無法從基地訪問類(如Base.classes.Example_Table)

from sqlalchemy import create_engine, MetaData 
from sqlalchemy.orm import create_session 

from sqlalchemy.ext.automap import automap_base 

engine = create_engine("mysql+mysqldb://") 

Base = automap_base() 
Base.prepare(engine, reflect = True) 

session = create_session(bind = engine) 

然後我跑到發現的類不存在對元數據的所有表(我沒有隻使用= []元數據參數)

for mappedclass in Base.classes: 
    print mappedclass 

for mdtable in metadata.tables: 
    print mdtable 

才發現Example_Table(以下情況創建語法)不具有類

CREATE TABLE `Example_Table` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `attributeType` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3290719 DEFAULT CHARSET=latin1 

即Base.class.Example_Table返回以下錯誤

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-15-94492ae1b8ba> in <module>() 
     7 type(metadata.tables) 
     8 
----> 9 Base.classes.Example_Table 

/usr/local/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyc in __getattr__(self, key) 
    172    return self._data[key] 
    173   except KeyError: 
--> 174    raise AttributeError(key) 
    175 
    176  def __contains__(self, key): 

AttributeError: Example_Table 

我不認爲會發生這個問題,因爲我Example_Table名稱中有一個下劃線。

我認爲這個問題與我的Example_Table沒有主鍵有關。 Example_Table僅用於鏈接兩個其他表。

回答