Python sqlalchemy: таблица без первичных ключей и повторяющихся значений?

Я использую существующую базу данных, созданную третьей стороной с помощью 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 не найден. Есть идеи о том, что я делаю неправильно? Заранее спасибо.

РЕДАКТИРОВАТЬ: По запросу, вот пример из таблицы (полученной непосредственно из 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 

5
задан Einar 15 February 2012 в 10:38
поделиться