Форум сайта python.su
Здравствуйте!
Мне необходимо разработать клиентскую часть архитектуры «Клиент-Сервер».
А точнее нужно создать приложение,позволяющее считывать и модифицировать данные из таблицы.
Работаю с PostgreSQL с помощью Python-драйвера Psycopg.
У меня в pgAdmin в бд “test” создана таблица “person” с полями: “number”, “firstname”, “lastname”.
Именно с этой таблицей нужно работать.
Выполнял чисто по тексту лабораторной, которую скинул в приложении, однако при запуске у меня вылезает следующая ошибка: .
Вот сам исходный код:
#------------------------------------------------------------------------------- # Name: module1 # Purpose: # # Author: Evgeniy # # Created: 01.05.2015 # Copyright: (c) Evgeniy 2015 # Licence: <your licence> #------------------------------------------------------------------------------- import psycopg2 from psycopg2.extensions import register_type, UNICODE CONN_STR = "host='localhost' dbname='test'" class PersonDatabase(object): def __init__(self): register_type(UNICODE) self._conn = psycopg2.connect(CONN_STR) self._cur = self._conn.cursor() self._cur.execute('select * from person') def print_person(self): self._cur.scroll(0, mode='absolute') for row in self._cur.fetchall(): print row def add_person(self, firstname, lastname): self._cur.execute('insert into person (firstname, lastname) \ values (%s, %s)', (firstname, lastname,)) self._conn.commit() self._cur.execute('select * from person') def run(self): choice = 0 choices = { 1 : lambda : self.print_person(), 2 : lambda : self.add_person(raw_input('firstname'),\ raw_input('lastname')), 3 : lambda : self.change_person((raw_input('number'),\ (raw_input('firstname'),raw_input('lastname')))), 4 : lambda : self.remove_person(raw_input('number')), } while (choice != 5): print 20*'-' print '1. print person' print '2. add person' print '3. change person' print '4. remove person' print '5. EXIT' print 'choose:' choice = int(raw_input()) if choice in choices: choices[choice]() def change_person(self, number, firstname, lastname): self._cur.execute('update person set firstname=%s, lastname=%s where \ id = %s', (firstname, lastname, number,)) self._conn.commit() self._cur.execute('select * from person') def remove_person(self, number): self._cur.execute('delete from person where id= %s', (number,)) self._conn.commit() self._cur.execute('select * from person') if __name__ == '__main__': PersonDatabase().run()
Прикреплённый файлы:
04-cs_client.pdf (36,8 KБ)
Офлайн
Хм, уже другая картина:
Вроде запускается, но ничего не видно)
Офлайн
Вот это
if __name__ == '__main__': PersonDatabase().run()
class PersonDatabase(): bla-bla if __name__ == '__main__': PersonDatabase().run()
Офлайн