私のローカルマシンにモデルを作成しましたが、私は外部キーのインデックスを見つけませんでした。
私は
from sqlalchemy import create_engine
engine = create_engine('mysql://test:[email protected]/test1', echo=True)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Date, Text, BigInteger, ForeignKey
from sqlalchemy.orm.attributes import InstrumentedAttribute
Base = declarative_base()
class A(Base):
__tablename__ = "a"
a_id = Column(BigInteger, primary_key=True, autoincrement=True)
class B(Base):
__tablename__ = "b"
b_id = Column(BigInteger, primary_key=True, autoincrement=True)
a_id = Column(BigInteger, ForeignKey(A.a_id))
Base.metadata.create_all(engine)
を使用し、バックグラウンドログがあります。
2012-02-24 09:39:24,249 INFO sqlalchemy.engine.base.Engine SELECT DATABASE()
2012-02-24 09:39:24,249 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,254 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'character_set%%'
2012-02-24 09:39:24,254 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,277 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'lower_case_table_names'
2012-02-24 09:39:24,277 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,288 INFO sqlalchemy.engine.base.Engine SHOW COLLATION
2012-02-24 09:39:24,289 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,292 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode'
2012-02-24 09:39:24,292 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,293 INFO sqlalchemy.engine.base.Engine DESCRIBE `a`
2012-02-24 09:39:24,293 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,321 INFO sqlalchemy.engine.base.Engine ROLLBACK
2012-02-24 09:39:24,322 INFO sqlalchemy.engine.base.Engine DESCRIBE `b`
2012-02-24 09:39:24,322 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,323 INFO sqlalchemy.engine.base.Engine ROLLBACK
2012-02-24 09:39:24,324 INFO sqlalchemy.engine.base.Engine
CREATE TABLE a (
a_id BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (a_id)
)
2012-02-24 09:39:24,324 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,590 INFO sqlalchemy.engine.base.Engine COMMIT
2012-02-24 09:39:24,591 INFO sqlalchemy.engine.base.Engine
CREATE TABLE b (
b_id BIGINT NOT NULL AUTO_INCREMENT,
a_id BIGINT,
PRIMARY KEY (b_id),
FOREIGN KEY(a_id) REFERENCES a (a_id)
)
2012-02-24 09:39:24,591 INFO sqlalchemy.engine.base.Engine()
2012-02-24 09:39:24,762 INFO sqlalchemy.engine.base.Engine COMMIT
私もa
とb
用のMySQLでのcreate table文を確認してください。
インデックスは、外部キーにないプライマリキーのみです。
お使いのマシンでこれを試してください。テーブルb
の外部キーのインデックスを作成しているマシンを見つけたら、この回答に書いたように作成してください。
これがあなたの問題を解決することを願っています。
MyISAMでインデックスを作成するコードを提供してください – Nilesh
インデックスに何かの外部キーを設定することはできません。 – ceejayoz