Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: Django
Войти
Регистрация
Восстановить пароль
 
Turn96
0 / 0 / 4
Регистрация: 04.04.2015
Сообщений: 83
#1

Django + tastypie + SqlAlchemy - Django

12.08.2015, 07:55. Просмотров 504. Ответов 5
Метки нет (Все метки)

Есть модель базы
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import column_property
from ..base import Base
 
class Staff(Base):
    __tablename__ = 'account'
    id = Column(Integer, primary_key=True)
    name = column_property(Column(String(30), nullable=False))
    surname = column_property(Column(String(30)))
    otch = column_property(Column(String(30), nullable=False))
    b_date = column_property(Column(String(30)))
    pol = column_property(Column(String(3), nullable=False))
    email = column_property(Column(String(100)))
    gruppa = column_property(Column(String(30), nullable=False))
    fak = column_property(Column(String(30)))
    profile = column_property(Column(String(30), nullable=False))

файл(from ..base import Base):
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# -*- coding: utf-8 -*-
 
import logging
import time
 
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, scoped_session
from sqlalchemy import create_engine
from sqlalchemy import exc
from sqlalchemy import event
from sqlalchemy.pool import Pool
 
 
from db.settings import TOGUDB_URL
from db.util import json_serialize, json_deserialize
 
# Taken from:
# [url]http://docs.sqlalchemy.org/en/rel_0_7/core/pooling.html[/url]
 
@event.listens_for(Pool, "checkout")
def ping_connection(dbapi_connection, connection_record, connection_proxy):
    cursor = dbapi_connection.cursor()
    try:
        cursor.execute("SELECT 1")
    except:
        # optional - dispose the whole pool
        # instead of invalidating one at a time
        # connection_proxy._pool.dispose()
 
        # raise DisconnectionError - pool will try
        # connecting again up to three times before raising.
        raise exc.DisconnectionError()
    cursor.close()
    
logger = logging.getLogger("togudb")
 
Base = declarative_base()
 
engine = create_engine(TOGUDB_URL,
                       echo=False,
                       json_serializer=json_serialize,
                       json_deserializer=json_deserialize)
Session = scoped_session(sessionmaker(bind=engine))
 
 
# @event.listens_for(engine, "before_cursor_execute")
# def before_cursor_execute(conn, cursor, statement, 
#                         parameters, context, executemany):
#     context._query_start_time = time.time()
#     logger.debug("Start Query: %s" % statement)
# 
# @event.listens_for(engine, "after_cursor_execute")
# def after_cursor_execute(conn, cursor, statement, 
#                         parameters, context, executemany):
#     total = time.time() - context._query_start_time
#     logger.debug("Query Complete!")
#     logger.debug("Total Time: %f" % total)
 
from db.events import session_before_flush, session_after_flush
 
event.listen(Session, 'before_flush', session_before_flush)
event.listen(Session, 'after_flush', session_after_flush)
 
 
from db.apps import *

файл ресурсов:
Python
1
2
3
4
5
6
7
8
9
10
from tastypie.resources import ModelResource
from list.models import Card
from tastyalchemy import SQLAlchemyResource
from db.admin.db import Staff, Stoped
class MyModelResource(SQLAlchemyResource):
    class Meta:
        #queryset = Card.objects.all()
 
        object_class = Staff
        allowed_methods = ['get', 'post', 'put', 'delete']

при запуске http://localhost:8000/api/v1/mymodel/?format=json:
JSON
1
{"error_message": "'NoneType' object has no attribute 'orm'", "traceback": "Traceback (most recent call last):\n\n  File \"C:\\mobile\\mobile\\lib\\site-packages\\tastypie\\resources.py\", line 202, in wrapper\n    response = callback(request, *args, **kwargs)\n\n  File \"C:\\mobile\\mobile\\lib\\site-packages\\tastypie\\resources.py\", line 433, in dispatch_list\n    return self.dispatch('list', request, **kwargs)\n\n  File \"C:\\mobile\\mobile\\lib\\site-packages\\tastypie\\resources.py\", line 465, in dispatch\n    response = method(request, **kwargs)\n\n  File \"C:\\mobile\\mobile\\lib\\site-packages\\tastypie\\resources.py\", line 1287, in get_list\n    objects = self.obj_get_list(bundle=base_bundle, **self.remove_api_resource_names(kwargs))\n\n  File \"C:\\test_portal\\api\\pie\\tastyalchemy.py\", line 53, in obj_get_list\n    return self.get_object_list(request)\n\n  File \"C:\\test_portal\\api\\pie\\tastyalchemy.py\", line 46, in get_object_list\n    sess = request.orm.sessionmaker()\n\nAttributeError: 'NoneType' object has no attribute 'orm'\n"}

как правильно подключать SQLAlchemy к tastypie??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2015, 07:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Django + tastypie + SqlAlchemy (Django):

Настроить авторизацию через социальные сети в django с помощью Django Social Auth
Пытаюсь настроить авторизацию через социальные сети в django с помощью Django...

Post tastypie
Всех с Новым годом! Собственно такой вопрос, есть приложение на Android,...

Добавление данных в таблицу БД в цикле for. sqlalchemy PYTHON
Помогите с кодом Python. Нужно скопировать записи с БД с заменой одного...

Django ORM запрос с подзапросом или переведите SQL в запрос Django ORM
В общем весь вопрос был в заголовке! Есть запрос на SQL он работает нормально...

Django 2.0
Здравствуйте, вот у меня стоит на ПК python 3.4.3 и он установил мне Django...

Django и AD
Добрый день. Столкнулся с такой проблемой: нужно создать (скопировать) в БД...

5
MAKAPOH
30 / 20 / 1
Регистрация: 08.09.2012
Сообщений: 77
12.08.2015, 11:25 #2
А разве tastypie поддерживает SQLAlchemy? Что то в документации об этом ни слова не нашёл.
0
Turn96
0 / 0 / 4
Регистрация: 04.04.2015
Сообщений: 83
12.08.2015, 16:09  [ТС] #3
есть библиотека поддержки tastyalchemy
https://github.com/devhub/tastyalchemy
0
Wolkodav
609 / 462 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
12.08.2015, 18:07 #4
Turn96, так, а django тут причем? Она вообще себя нормально чувствует с SqlAlchemy? Тут посмотрите, поймёте почему ошибка. У django request нету такого поля как orm.

Добавлено через 33 секунды
Turn96, уж если на SqlAlchemy замахнулись, то прямой путь вам на Flask.
0
Turn96
0 / 0 / 4
Регистрация: 04.04.2015
Сообщений: 83
13.08.2015, 06:30  [ТС] #5
а как обойти request?

Добавлено через 2 часа 59 минут
а как обойти request?
0
Wolkodav
609 / 462 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
13.08.2015, 09:08 #6
Turn96, да никак. Ну или писать свой request_context или, еще раз повторюсь, включить голову и убрать SqlAlchemy из проекта на django.
0
13.08.2015, 09:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2015, 09:08
Привет! Вот еще темы с решениями:

установка django
Здравствуйте, я хотел поинтересоваться у знающих людей(у вас,кто это читает), я...

Treemenus django 1.9
Добрый день. Не могу создать таблицу меню. Установил treemenus через pip,...

Django 1.4.13 windows xp
Здравствуйте, сделал сайт, отлично работает(на debian) и наотрез отказывается...

Кроперы в Django
Доброго времени суток! В общем, есть расширенная модель пользователя - в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru