pandas to_sql函数生成多个索引而不是分层索引

时间:2016-08-22 22:00:23

标签: python pandas

我有以下示例CSV文件:

AlignmentId,Classifier,Value
aln1,classifier1,True
aln1,classifier2,False
aln2,classifier1,True

哪个应该由元组(AlignmentId, Classifier)唯一键控,并且我想使用此层次结构索引将其加载到SQL。当我这样做时,pandas会生成两个(非唯一)索引:

import pandas as pd
import sqlalchemy
df = pd.read_csv('test.csv', index_col=[0, 1])
con = sqlalchemy.create_engine('sqlite:///test.db')
df.to_sql('test', con)

如果我去sqlite表,并询问架构:

sqlite> .open test.db
sqlite> .schema
CREATE TABLE test (
    "AlignmentId" TEXT,
    "Classifier" TEXT,
    "Value" BOOLEAN,
    CHECK ("Value" IN (0, 1))
);
CREATE INDEX "ix_test_Classifier" ON test ("Classifier");
CREATE INDEX "ix_test_AlignmentId" ON test ("AlignmentId");
sqlite>

为什么这不会产生层次索引?我有一些似乎工作的遗留代码,当我检查数据库模式时,我改为看

CREATE INDEX "ix_BALB_cJ_cgp_CgpId_EnsId"ON "BALB_cJ_cgp" ("CgpId","EnsId");

编辑:进一步分析,这似乎是使用sqlalchemy作为连接引擎和使用旧版sqlite3包之间的区别。

所以,这个问题可能会被重新描述'我如何让SQLAlchemy生成这样的层次索引?'

0 个答案:

没有答案