Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 7, 2011 16:33:33

Kamisel
От:
Зарегистрирован: 2011-02-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Python + Postgresql

Доброго времени суток!
Совсем недавно заинтересовался Python, нахожусь на начальном уровне изучения. К сожалению по форуму не нашёл, имеется бд pgsql установленная на linux в которой периодически обновляются поля т.е поступают новые данные, хотелось бы написать какое то приложение, цель коннектиться к базе и выводить на экран новые пришедшие сообщения т.е соединение должно быть постоянно открыто и раз в 30 сек проверять новые поступления. Приложение планирую для Windows.
Имеются ли мануалы или примеры подобных программ? а так же возможно сделать данное соединение без использования odbc драйвера? Заранее благодарю.



Офлайн

#2 Фев. 8, 2011 10:34:30

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Python + Postgresql

По архитектуре БД для такого рода приложений можете посмотреть как это организовано в friendsfeed - http://bret.appspot.com/entry/how-friendfeed-uses-mysql - там конечно по mysql, но идеи будут хорошо работать и на слоне.

По поводу соединения с БД - если речь идет именно о питоне - смотрите например здесь - http://wiki.postgresql.org/wiki/Python



Офлайн

#3 Фев. 8, 2011 13:09:39

Kamisel
От:
Зарегистрирован: 2011-02-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Python + Postgresql

Благодарю



Офлайн

#4 Фев. 9, 2011 15:44:08

DcDr
От:
Зарегистрирован: 2011-01-09
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Python + Postgresql

А подключение к PostgreSQL через psycopg2 - это самый лучший на сегодня из существующих драйверов\адаптеров между PostgreSQL и Python.
Или через SQLAlchemy, если на более высоком уровне хочется программировать.



Офлайн

#5 Фев. 16, 2011 11:38:04

Kamisel
От:
Зарегистрирован: 2011-02-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Python + Postgresql

Да psycopg2 использовал. В принципе у меня получилось соединение, данные все переносятся в таблице и обрабатывается. Теперь мысль в том как сделать, что бы раз в 30 сек допустим, программа проверяла наличие обновлений в таблице, таймер какой то делать нужно? У меня затруднения в этом. Зацикливать процесс не вариант.



Офлайн

#6 Фев. 17, 2011 07:47:30

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Python + Postgresql

Используйте потоки

модуль threading

from threading import Thread
class MySheduler(Thread):
def run(self):
while True:
do_something()
time.sleep(30)

MySheduler().start()



Офлайн

#7 Фев. 18, 2011 08:20:02

Kamisel
От:
Зарегистрирован: 2011-02-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Python + Postgresql

>>> 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()

>>>
Мне кажется понятно, что хочу выводить слово ‘hi’ через определённый интервал времени.
К сожалению тоже не отрабатывает.



Отредактировано (Фев. 18, 2011 08:22:09)

Офлайн

#8 Фев. 18, 2011 09:35:11

Борисенков Сергей
От:
Зарегистрирован: 2011-01-11
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Python + Postgresql

А с отступами у вас все в порядке?



Офлайн

#9 Фев. 18, 2011 09:54:15

Kamisel
От:
Зарегистрирован: 2011-02-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Python + Postgresql

Ошибок последний скрипт не даёт, он просто не запускается, с отступами честно, не знаю, если есть какие то мысли или идеи, прошу высказать предположения, попробую проверить.



Офлайн

#10 Фев. 18, 2011 10:55:16

Борисенков Сергей
От:
Зарегистрирован: 2011-01-11
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Python + Postgresql

Читаем 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



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version