Переход от небольших скриптов к большим приложениям нелегок

Я считаю, что удобочитаемость и принцип KISS - самые важные вещи в программировании. Вот почему я использую Python :)
И вот точная ситуация, с которой я сталкиваюсь очень часто:

Скажем, у меня есть красивый и чистый сценарий, который является оболочкой для обработки базы данных:

import database_schema as schema
loader = schema.Loader("sqlite:///var/database.db")
session = loader.session

def addUser(name, full_name, password):
    user = schema.User(name, full_name, password)
    session.add(user)
    session.commit()

def listUsers():
    all_users = session.query(schema.User).all()
    return all_users

Который используется следующим образом:

import database
database.addUser("mike", "Mike Driscoll", "password")
database.listUsers()

В какой-то момент я хотите переписать этот модуль, чтобы он мог работать с базами данных по другому пути (например, для модульного тестирования).

Итак, каковы мои варианты?

  1. Самым интуитивно понятным является добавление database_path = = "" переменная, а потом ... что? Установка его с помощью функции setPath (new_path) , а затем добавление исключения ( if database_path == "": поднять SomeException ) для каждой отдельной функции просто некрасиво и не должно выполняться кем угодно.

  2. Полнофункциональный класс с установкой self._database_path во время инициализации.

Который затем используется следующим образом: удалить строки таблицы в зависимости от повторяющихся значений столбца? У меня есть таблица со столбцом года, и в этом столбце не должно быть повторяющихся значений. Так, например, я получаю таблицу только с одной записью за 2007 год. Итак, как мне удалить те строки, в которых есть ...

У меня есть таблица со столбцом года, и в этом столбце не должно быть повторяющихся значений. Таким образом, я получаю таблицу, например, только с одной записью за 2007 год.

Итак, как я могу удалить те строки, которые имеют повторяющееся значение года?

Спасибо

7
задан Feras Odeh 5 October 2010 в 08:16
поделиться