2013-05-05 2 views
0

Я работаю над приложением python, которое подключается к нескольким различным базам данных. Я хотел бы, чтобы в моем проекте разные пакеты могли использовать функции базы данных. Вместо того, чтобы создавать логику базы данных в каждом из пакетов, как я могу создать пакет «Глобальный», который я могу использовать? Вот пример структуры я имею в виду использование:Лучший способ импортировать базу данных в проект python

main.py 
    package1/ 
     __init__.py 
     stuff1.py 
     stuff2.py 
    package2/ 
     __init__.py 
     moar1.py 
     moar2.py 
    database/ 
     __init__.py 
     dbfunctions.py 

Я хотел бы иметь возможность использовать функции базы данных в материале и Moar файлов, не вызывая их main.py. Я хотел бы иметь возможность писать логику базы данных, sql и т. Д. В пакетах и ​​запускать их независимо на основе вызовов с main.py.

Вопрос: Как импортировать функции базы данных в package1 и package2? Я хотел бы импортировать элементы базы данных из каталога sibling.

(также, я лучше знаком с использованием PHP и только начинаю с python, поэтому, если я полностью схожу вниз по неправильному пути, я еще не начал писать приложение. .)

+0

Вы пробовали вышеуказанное решение, и если да, то какая у вас проблема? –

+0

Извините, мне кажется, я забыл задать свой вопрос. Выделено жирным шрифтом. – muncherelli

+0

Протестируйте его и сообщите с ** конкретным ** вопросом или проблемой. – hd1

ответ

0

Чтобы импортировать из каталога родственных сестер, пакеты для родственников должны быть частью родительского пакета.

Изменить макет на:

wholeproject/ 
    __init__.py 
    main.py 
    package1/ 
     __init__.py 
     stuff1.py 
     stuff2.py 
    package2/ 
     __init__.py 
     moar1.py 
     moar2.py 
    database/ 
     __init__.py 
     dbfunctions.py 

, а затем, в main.py, вы можете импортировать материал и Moar так:

from wholeproject.package1 import stuff1 
from wholeproject.package2 import moar1 

и stuff1 вы можете получить dbfunctions, как это:

from wholeproject.database import dbfunctions 

Или вы можете взять индивидуальные функции по мере необходимости ... но это должно вас начать. У тебя это было почти так!

+0

AH, я не знал, что мне нужно создать пакет для родителя ... спасибо! – muncherelli