Форум сайта python.su
Доброго времени суток!
Совсем недавно заинтересовался Python, нахожусь на начальном уровне изучения. К сожалению по форуму не нашёл, имеется бд pgsql установленная на linux в которой периодически обновляются поля т.е поступают новые данные, хотелось бы написать какое то приложение, цель коннектиться к базе и выводить на экран новые пришедшие сообщения т.е соединение должно быть постоянно открыто и раз в 30 сек проверять новые поступления. Приложение планирую для Windows.
Имеются ли мануалы или примеры подобных программ? а так же возможно сделать данное соединение без использования odbc драйвера? Заранее благодарю.
Офлайн
По архитектуре БД для такого рода приложений можете посмотреть как это организовано в friendsfeed - http://bret.appspot.com/entry/how-friendfeed-uses-mysql - там конечно по mysql, но идеи будут хорошо работать и на слоне.
По поводу соединения с БД - если речь идет именно о питоне - смотрите например здесь - http://wiki.postgresql.org/wiki/Python
Офлайн
Благодарю
Офлайн
А подключение к PostgreSQL через psycopg2 - это самый лучший на сегодня из существующих драйверов\адаптеров между PostgreSQL и Python.
Или через SQLAlchemy, если на более высоком уровне хочется программировать.
Офлайн
Да psycopg2 использовал. В принципе у меня получилось соединение, данные все переносятся в таблице и обрабатывается. Теперь мысль в том как сделать, что бы раз в 30 сек допустим, программа проверяла наличие обновлений в таблице, таймер какой то делать нужно? У меня затруднения в этом. Зацикливать процесс не вариант.
Офлайн
Используйте потоки
модуль threading
from threading import Thread
class MySheduler(Thread):
def run(self):
while True:
do_something()
time.sleep(30)
MySheduler().start()
Офлайн
>>> class MySheduler(Thread):
def run(self):
while True:
do_something()
time.sleep(5)
SyntaxError: unindent does not match any outer indentation level
>>>
>>> import threading
>>> class Timer(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.event = threading.Event()
def run(self):
while not self.event.is_set():
print ('hi')
self.event.wait(1)
def stop(self):
self.event.set()
tmr = Timer()
tmr.start()
>>>
Отредактировано (Фев. 18, 2011 08:22:09)
Офлайн
А с отступами у вас все в порядке?
Офлайн
Ошибок последний скрипт не даёт, он просто не запускается, с отступами честно, не знаю, если есть какие то мысли или идеи, прошу высказать предположения, попробую проверить.
Офлайн
Читаем https://www.ibm.com/developerworks/ru/library/l-python_part_9/
еще ищем в интернете и снова читаем :)
Вобщем где-то так:
import threading
import time
class ClockThread(threading.Thread):
def __init__(self,interval):
threading.Thread.__init__(self)
#self.daemon = True
self.interval = interval
self.runned=True
def run(self):
while self.runned: #True:
print("The time is %s" % time.ctime())
print self.runned
time.sleep(self.interval)
t = ClockThread(5)
t.start()
t.runned =False
Офлайн