sqlautocode: первичный ключ требуется в таблицах? - PullRequest
0 голосов
/ 15 февраля 2011

Это относится к ограничению первичного ключа в SQLAlchemy & sqlautocode.У меня есть SA 0.5.1 & sqlautocode 0.6b1 У меня есть таблица MySQL без первичного ключа.sqlautocode выплевывает трассировку, которая «не может собрать столбцы первичного ключа».

Можно ли исправить это с помощью патча, чтобы он отражал таблицы без первичного ключа?

Спасибо, Vineet Deodhar

Ответы [ 3 ]

0 голосов
/ 14 марта 2011

Нам удалось подделать sqa, если в базовой таблице есть комбинация столбцов, которые однозначно ее идентифицируют.

Если это ваша собственная таблица, и вы не активны, добавьте столбец целого числа первичного ключа или что-то в этом роде.

Мы даже смогли отобразить существующую унаследованную таблицу в базе данных с a) без pk и b) без прокси для первичного ключа в других столбцах. Это был Oracle, а не MySQL, но мы смогли взломать sqa, чтобы увидеть в Oracle rowid как pk, хотя это безопасно только для вставки и запроса ... обновление невозможно, поскольку не может однозначно определить, какую строку следует обновлять. Но это уродливые хаки, поэтому, если вы можете помочь, не идите по этому пути.

0 голосов
/ 14 марта 2011

Если проблема в том, что sqlautocode не будет генерировать код вашего класса, поскольку он не может определить PK таблицы, вы, вероятно, сможете изменить этот код в соответствии с вашими потребностями (даже если это означает создание кода SQLA, который не 'у меня есть ПК).В конце концов, если вы используете сторону SQLA ORM, вам понадобятся поля, определенные как PK, даже если база данных явно не помечает их как таковые.

0 голосов
/ 15 февраля 2011

Я так не думаю.Как ORM используется для сохранения объекта в базе данных без какого-либо способа уникальной идентификации записей?

Однако большинство ORM принимают аргумент primary_key, поэтому вы можете указать ключ, если он явно не определен в базе данных.

...