Сразу хотел бы сказать,что опыта с web и работы c python'oм на уровне начинающего, но уже разобрался как работать из питона с MS SQL и Oracle 11G-но в виде просто консольного скрипта.
а мне допустим хотелось бы создать некую старотовую web-страницу, чтобы допустим можно было это скрипт запустить,используя к примеру кнопку на стартовой web-cстранице через браузер клиента ЛВС.
Как это можно реализовать(если есть мануал на рус яз)?
сейчас у меня скрипт(по работе с MS SQL) представляет из себя примерно сл. структуру:
#!-*-coding: cp1251 -7 import os,pymssql,sys os.putenv("NLS_LANG","RUSSIAN_RUSSIA.UTF8") def fun_mssql(): ..... conect=pymssql.connect(......) ...... rez=conect.fetchall() conect.close return rez ........ def fun1(argumm): ....... k=fun_mssql() #работа с файлами и каталогами+запись логов в тектовые файлы+вывод результата в консоль через #print ..... if "__main__"==__name__: argumme=sys.argv[1] fun1(argumme)
я пробовал ещё Flask
вот примерный код скрипта у меня был:
#!/usr/bin/env python #!-*-coding: cp1251 -7 import os,pymssql,sys os.putenv("NLS_LANG","RUSSIAN_RUSSIA.UTF8") #импортируем класс Flask from flask import Flask from flask import render_trmplate DEBAG=True #создаём экземпляр app класса Flask. Экземпляр уже явл wsgi-приложением app=Flask(__name__) @app.route('/index1.html',methods=['GET']) def fun_mssql(): ..... conect=pymssql.connect(......) ...... rez=conect.fetchall() conect.close return rez def fun1(argumm): ....... k=fun_mssql() #работа с файлами и каталогами+запись логов в тектовые файлы+вывод результата в консоль через #print ..... return render_template('index1.html',key_one=k) if __name__=="__main__": app.run(debug=True, host='0.0.0.0')
потом создал два каталога в ручную в той же директории,где расположен был скрипт:
/var/www/html/py
1)/var/www/html/py/static
2)/var/www/html/py/templates
static содержит файл стилей оформления style.css
templates содержит шаблон стартовой страницы index1.html, содержание которой примерно такое:
<!doctype html> <title> Стартовая страница </title> {% extends "index1.html" %} {% block body %} {% if session.logged_in %} <meta content="text/html; charset=windows-1251"> <link href="style.css" rel="stylesheet" type="text/css"> </link> <form> <p><h1> Стартовая страница</h1></p> <table> <tr> <th>Ответ на запрос</th> </tr> <tr> <th>{{key_one}}</th> </tr> </table> </form> {% endif %} <ul class=entries> {% for entry in entries %} {% else %} <li><em>Unbelievable</em> <% endfor %> </ul> {% endblock %}
[nov@server py]# python hello.py * Running on http://127.0.0.1:5000/ * Restarting with reloader...
http://ip_adrr_server:5000/index1.html
а на серверной части,где я запусти скрипт получаю сл информацию:
* Running on http://127.0.0.1:5000/ * Restarting with reloader... 127.0.0.1 - - [17/Feb/2012 11:37:54] "GET /index1.html HTTP/1.0" 500 - ---------------------------------------- Exception happened during processing of request from ('127.0.0.1', 44224) Traceback (most recent call last): File "/usr/lib/python2.6/SocketServer.py", line 283, in _handle_request_noblock self.process_request(request, client_address) File "/usr/lib/python2.6/SocketServer.py", line 309, in process_request self.finish_request(request, client_address) File "/usr/lib/python2.6/SocketServer.py", line 322, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python2.6/SocketServer.py", line 618, in __init__ self.finish() File "/usr/lib/python2.6/SocketServer.py", line 661, in finish self.wfile.flush() File "/usr/lib/python2.6/socket.py", line 303, in flush self._sock.sendall(buffer(data, write_offset, buffer_size)) error: [Errno 32] Broken pipe
пробовал из локали обратиться к сервеной части,тоже самое…даже попробовал таким образом из локале обратиться:
wget 'http://127.0.0.1:5000/index1.html'
тоже самое получил.
вообщем как сами понимаете,результата я не достиг((+и не понял как кнопку реализовать.
В итге Flask теоретически понравился и вроде разобрался,но на практике не получилось((