2009-07-20 3 views
21

Кто-нибудь использовал SQLAlchemy в дополнение к ORM Django?SQLAlchemy и django, готово ли это производство?

Я хотел бы использовать ORM Django для обработки объектов и SQLalchemy для сложных запросов (например, для тех, которые требуют левого внешнего соединения).

Возможно ли это?

Примечание: Я знаю о django-sqlalchemy, но проект, похоже, не готов к производству.

ответ

17

Что бы я сделал,

  1. Определение схемы в Django ORM, пусть написать дб через SyncDB. Вы получаете интерфейс администратора.

  2. В view1 вам нужен комплекс присоединиться

 

    def view1(request): 
     import sqlalchemy 
     data = sqlalchemy.complex_join_magic(...) 
     ... 
     payload = {'data': data, ...} 
     return render_to_response('template', payload, ...) 
 
6

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

  1. ОРМ и использовать пользовательские SQL Использовать Django, где Джанго встроенный в поколение SQL не отвечает вашим потребностям, или
  2. Использование SQLAlchemy (что дает более точный контроль по цене добавленной сложности) и, если необходимо, используйте декларативный слой, такой как Elixir, чтобы сделать жизнь немного легче.

Конечно, если вам нужен администратор Django, рекомендуется использовать первый из этих подходов.

+2

Не могли бы вы объяснить, почему не рекомендуется использовать оба метода? –

+5

Это не сложное и быстрое правило - просто не имеет смысла иметь два компонента в системе, которые делают то же самое. Это выполнимо, конечно. Многое зависит от того, является ли это хобби, размер команды разработчиков и т. Д. –

4

Jacob Kaplan-Moss признался, набрав "импорт SQLAlchemy" время от времени. Я могу написать адаптер набора запросов для результатов sqlalchemy в недалеком будущем.

6

Я сделал это раньше, и все в порядке. Используйте функцию SQLAlchemy, где она может считываться в схеме, поэтому вам не нужно дважды объявлять свои поля.

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

Это стоит того, так как материал SQLAlchemy намного приятнее для таких вещей, как объединения.

2

В настоящее время вы можете использовать Aldjemy. Подумайте об использовании этого tutorial.

Смежные вопросы