Если первичный ключ - только один столбец, вы можете сделать что-то вроде:
getattr(table.c, pkey_col_name) == S
как «общая» версия marital.c.marital_status_description == S
.
Итак, что-то вроде (обратите внимание: это не проверено):
def get_row(table, col_name, val, default=None):
col = getattr(table.c, col_name)
row = table.select(col == S).execute().fetchone()
if row == None:
print "Warning: No row found for %s in %s; using %s" % (val, table, default)
row = table.select(col == default).execute().fetchone()
return row[0]
Если у вас есть сопоставленные классы, это еще проще; Вы можете делать такие вещи, как:
record = session.query(Marital).get(key)
где Marital
- сопоставленный класс для таблицы marital
, session
- сеанс алхимии sql, key
- кортеж ключевых столбцов (по порядку) Если ключ существует в таблице, record
будет найденной строкой; в противном случае это будет None
.