Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 8, 2015 14:45:10

Evgeniy123
Зарегистрирован: 2015-06-08
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Архитектура «Клиент-Сервер». Клиентская часть

Здравствуйте!
Мне необходимо разработать клиентскую часть архитектуры «Клиент-Сервер».
А точнее нужно создать приложение,позволяющее считывать и модифицировать данные из таблицы.
Работаю с 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()

Буду очень благодарен, если кто-нибудь решит этот вопрос.

Прикреплённый файлы:
attachment 04-cs_client.pdf (36,8 KБ)

Офлайн

#2 Июнь 8, 2015 15:15:25

Evgeniy123
Зарегистрирован: 2015-06-08
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Архитектура «Клиент-Сервер». Клиентская часть

Хм, уже другая картина:
Вроде запускается, но ничего не видно)

Офлайн

#3 Июнь 8, 2015 19:44:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Архитектура «Клиент-Сервер». Клиентская часть

Вот это

if __name__ == '__main__':
        PersonDatabase().run()

должно выглядеть так
class PersonDatabase():
    bla-bla
if __name__ == '__main__':
        PersonDatabase().run()
разумеется, никак не внутри самого класса.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version