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

Буду очень благодарен, если кто-нибудь решит этот вопрос.
Evgeniy123
Хм, уже другая картина:
Вроде запускается, но ничего не видно)
FishHook
Вот это
if __name__ == '__main__':
        PersonDatabase().run()

должно выглядеть так
class PersonDatabase():
    bla-bla
if __name__ == '__main__':
        PersonDatabase().run()
разумеется, никак не внутри самого класса.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB