私はsqlalchemyを使用してサードパーティ製の既存のデータベースを使用しています。しかし、テーブルにはプライマリキーがないので問題があります。さらに悪いことに、各行に重複する要素があるため、既存の列をプライマリキーとして選択することはできません。表には2つの列があります。どちらも一意でない値を持ちます。Pythonのsqlalchemy:プライマリキーと重複値のないテーブル?
私はhttp://www.blog.pythonlibrary.org/2010/09/10/sqlalchemy-connecting-to-pre-existing-databases/に従って猿パッチテーブルにしようとしましたが、どうやらこれは
が私の現在のコードがある(下記参照)は動作しません
(MirnaTable
は私のマップされたクラス、何もないと基本的にはスケルトンです)
connection = create_engine("sqlite:///targets.sqlite")
metadata = MetaData(bind=connection)
db_table = Table("miranda", metadata,
Column("id", Integer, primary_key=True),
autoload=True)
mapper(MirnaTable, db_table)
Session = sessionmaker(connection)
session = Session()
その後、私は
all_records = session.query(MirnaTable).all()
を発行例えば試してみて、私は
を取得sqlalchemy.exc.OperationalError: (OperationalError) no such column: miranda.id
u'SELECT miranda.gene_id AS miranda_gene_id, miranda."mature_miRNA" AS
"miranda_mature_miRNA", miranda.id AS miranda_id \nFROM miranda'()
もちろん、id列は見つかりません。私が間違っていることに関するアイデアは?前もって感謝します。
EDIT:要求されたように、ここで(SQLiteのから直接取り出さ)テーブルの例である:
gene mature_miRNA
---- -------------
80205 hsa-miR-200c
80205 hsa-miR-200c
9693 hsa-miR-200c
9693 hsa-miR-200c
9881 hsa-miR-200c
9710 hsa-miR-200c
9750 hsa-miR-200c
あなたは例のデータを持つテーブルを投稿できるしてください? – JackalopeZero
完了:現在どのような種類のデータがあるかのサンプルがあります。 – Einar
ORMは行のIDとして機能するものがなければ動作しません。テーブルをクラスにマッピングせずに直接使用することを検討してください。 –