Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » flask+sqlalchemy+firebird не работает через apache [RSS Feed]

#1 Фев. 3, 2014 18:37:13

agaspher
Зарегистрирован: 2013-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

flask+sqlalchemy+firebird не работает через apache

День добрый!
Возможно кто-то сможет объяснить почему происходит следующее:
win7x64+Python2.7+Flask0.10.1+flask_sqlalchemy1.0+firebird2.1+kinterbasedb

from flask import Flask,  render_template
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.debug = True
app.config.from_object(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'firebird+kinterbasdb://sysdba:masterkey@server:3050/d:/base.fdb'
fdb = SQLAlchemy(app)
class Discount(fdb.Model):
    name = fdb.Column(fdb.String(40))
@app.route('/discount')
def show_discount():
    names = Discount.query.all()
    return render_template('show_discount.html', names=names)

на встроенном сервере все отлично, данные приезжают, но если через apache2.2 mod_wsgi то вываливается ошибка:

Traceback (most recent call last):
File "C:/Apache2.2/wsgi_scripts/discount.wsgi", line 10, in <module>
from discount import app as application
File "c:/apache2.2/cgi-bin/discount\\discount.py", line 30, in <module>
discs = Disccli.query.limit(30)
File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 428, in __get__
return type.query_class(mapper, session=self.sa.session())
File "build\\bdist.win32\\egg\\sqlalchemy\\orm\\scoping.py", line 70, in __call__
return self.registry()
File "build\\bdist.win32\\egg\\sqlalchemy\\util\\_collections.py", line 903, in __call__
return self.registry.setdefault(key, self.createfunc())
File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 139, in __init__
bind=db.engine,
File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 780, in engine
return self.get_engine(self.get_app())
File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 797, in get_engine
return connector.get_engine()
File "C:\\Python27\\lib\\site-packages\\flask_sqlalchemy-1.0-py2.7.egg\\flask_sqlalchemy\\__init__.py", line 473, in get_engine
self._engine = rv = sqlalchemy.create_engine(info, **options)
File "build\\bdist.win32\\egg\\sqlalchemy\\engine\\__init__.py", line 335, in create_engine
return strategy.create(*args, **kwargs)
File "build\\bdist.win32\\egg\\sqlalchemy\\engine\\strategies.py", line 73, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "build\\bdist.win32\\egg\\sqlalchemy\\dialects\\firebird\\kinterbasdb.py", line 101, in dbapi
return __import__('kinterbasdb')
File "C:\\Python27\\lib\\site-packages\\kinterbasdb\\__init__.py", line 119, in <module>
import _kinterbasdb as _k
ImportError: DLL load failed: \xcf\xf0\xee\xe8\xe7\xee\xf8\xe5\xeb \xf1\xe1\xee\xe9 \xe2 \xef\xf0\xee\xe3\xf0\xe0\xec\xec\xe5 \xe8\xed\xe8\xf6\xe8\xe0\xeb\xe8\xe7\xe0\xf6\xe8\xe8 \xe1\xe8\xe1\xeb\xe8\xee\xf2\xe5\xea\xe8 \xe4\xe8\xed\xe0\xec\xe8\xf7\xe5\xf1\xea\xee\xe9 \xea\xee\xec\xef\xee\xed\xee\xe2\xea\xe8 (DLL).

Офлайн

#2 Фев. 4, 2014 04:29:27

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

flask+sqlalchemy+firebird не работает через apache

Рискну предположить что разрядности apache и fbclient.dll разные.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Фев. 4, 2014 05:38:58

agaspher
Зарегистрирован: 2013-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

flask+sqlalchemy+firebird не работает через apache

нет, разрядность одинаковая, апачь httpd-2.2.25-win32-x86-no_ssl.msi, и приложение, для которого пишу, так скажем, плагин, не работает с firebird x64, нет udf для него, поэтому firebird тоже x32

Офлайн

#4 Фев. 4, 2014 08:14:55

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

flask+sqlalchemy+firebird не работает через apache

Тогда следующее, что я бы проверил: пути к DLL и права. Но про виндоус я плохой советчик



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Фев. 4, 2014 08:54:47

agaspher
Зарегистрирован: 2013-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

flask+sqlalchemy+firebird не работает через apache

пути и права - это первое, что пришло мне в голову, fbclient.dll позакидывал уже куда только можно, сейчас на ubuntu хочу проверить, какой эффект будет у этой связки, правда даже если заработает надо будет что-то думать, ибо прога только под винду

Офлайн

#6 Март 4, 2014 06:26:15

agaspher
Зарегистрирован: 2013-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

flask+sqlalchemy+firebird не работает через apache

попробовал на убунте, результат тот же, ошибка kinterbasdb при импорте, пришлось использовать fdb, отказавшись от поддержки старых версий, работающих с interbase 7.5

Офлайн

#7 Апрель 9, 2014 08:35:46

agaspher
Зарегистрирован: 2013-03-21
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

flask+sqlalchemy+firebird не работает через apache

история получила продолжение, возникла такая же проблема с lxml, решил разобраться до конца, на винде помогло следующее:

- скачал windows sdk 7.1 (у меня не ставился, пока я не удалил VC++ 2010)
- в консоли:

mt -inputresource:“c:\python27\python.exe”;#1 -out:“c:\python27\extracted.python.exe.manifest”

- в файле extracted.python.exe.manifest удалил секцию <trustInfo>
- перенес файлик в директорию apache и переименовал в httpd.exe.manifest
- при остановленом apache в консоли:

mt -manifest “c:\apache22\bin\httpd.exe.manifest” -outputresource:“c:\apache22\bin\httpd.exe”;#1

после этого проблема исчезла, и с kinterbasdb и с lxml

Офлайн

  • Начало
  • » Web
  • » flask+sqlalchemy+firebird не работает через apache[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version