Форум сайта python.su
1
Добрый день. Имеется такая структура:
- Приложение:
— База данных(каталог):
—– actions(каталог):
——– edit.py
—– models.py
Так вот задача такая: импортировать определенные классы и объекты из файла models.py находясь в файле edit.py
Спасибо. 
Отредактировано MetalHead (Май 25, 2015 10:44:30)
Офлайн
568
Делайте свои каталоги пакетами и импортируйте из пакетов.
Офлайн
1
FishHook
Значит создал в каталогах пустые __init__.py, но пишет что-нет такого модуля. Пробую импортировать
import database.models
ImportError: No module named 'database'
Офлайн
568
конечно, его же нет в sys.path
если вы правильно сделали структуру пакета, должно работать так
from .database import models
Офлайн
1
FishHook
извиняюсь за глупые вопросы, еще по библиотеке sys не практиковался, да и приложение таким образом не “компановал”. У меня оба __init__.py пустые как написано по вашей ссылке.
Вызываю из edit.py
>>> from .database import models Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> from .database import models SystemError: Parent module '' not loaded, cannot perform relative import

import sys sys.path.insert(1, '/actions/')
Отредактировано MetalHead (Май 26, 2015 08:40:11)
Офлайн
568
Не видя кода трудно что-то советовать. Выкладывайте сюда архив с программой.
Офлайн
1
database/models.py
from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, ForeignKey class BaseClass: def __init__(self): self.baseDeclarative = declarative_base() self.baseEngine = create_engine('sqlite:///shop.db') declarativeObject = BaseClass() class Goods(declarativeObject.baseDeclarative): __tablename__ = 'goods' id = Column(Integer, primary_key = True) name = Column(String(250)) model = Column(String(250)) purchase = Column(Integer) price = Column(Integer) presence = Column(Integer) sale = Column(Integer) red_presence = Column(Integer, default=3) last_sale_date = Column(Integer) last_import = Column(Integer) alphabet = Column(String(10)) if __name__ == "__main__": declarativeObject.baseDeclarative.metadata.create_all(declarativeObject.baseEngine)
from models import declarativeObject as model from models import Goods from sqlalchemy.orm import sessionmaker class InitQueries: def __init__(self): model.baseDeclarative.metadata.bind = model.baseEngine dbSession = sessionmaker(bind=model.baseEngine) self.session = dbSession() init = InitQueries() class GoodsAction: def select(self, ident=None, alphabet=None): try: if ident == None and alphabet == None: rows = init.session.query(Goods).filter(Goods.alphabet == "А").all() return rows if ident == None and alphabet != None: rows = init.session.query(Goods).filter(Goods.alphabet == alphabet).all() return rows if ident != None: row = init.session.query(Goods).filter(Goods.id == ident).one() return row except: return "Ошибка выборки" pass def add(self, name, model, purchase, price, presence, sale, red_presence, last_import, alphabet): try: addRow = Goods(name=name, model=model, purchase=purchase, price=price,presence=presence, sale=sale, red_presence=red_presence, last_import=last_import, alphabet=alphabet) init.session.add(addRow) init.session.commit() print ("Добавлено") except: return "Ошибка добавления записи" if __name__ == "__main__": goods = GoodsAction()
Отредактировано MetalHead (Май 26, 2015 08:46:19)
Офлайн
568
Вы не понимаете, что важна структура проекта? Если бы мне нужны были ваши функции и классы, я бы так и сказал: покажите код. Я прошу весь проект в виде архива.
Офлайн
1
FishHook
пожалуйста 
Прикреплённый файлы:
project.rar (10,2 KБ)
Офлайн
568
Офлайн