Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Ghost48624
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 30
1

Написать функции для считывания данных о выбранных сущностях из базы данных SQLite

13.02.2016, 22:43. Просмотров 478. Ответов 1
Метки нет (Все метки)

Здравствуйте, помогите доделать программу.
Надо написать функции для считывания данных о выбранных сущностях из базы данных SQLite. В качестве входных данных дается имя файла, на выходе получается список или словарь объектов классов.

Классы объектов:
Клиенты (Клиент, Фамилия, Имя, Отчество, Паспортные данные, Комментарий).
Номера (Номер, Количество человек, Комфортность, Цена).
Поселение (Клиент, Номер, Дата поселения, Дата освобождения, Примечание).


После выполнения файла new.py должен получиться результат, приведённый на изображении ниже

new.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# -*- coding: cp1251 -
 
import itertools
from connect import create,close
class Klient:
    def __init__(self, code=0, fam='', imya='', otch='', comment='', passport=''):
            self.setcode(code)
            self.setfam(fam)
            self.setimya(imya)
            self.setotch(otch)
            self.setcomment(comment)
            self.setpassport(passport)
    def setcode(self,code):self.__code=code
    def getcode(self):return self.__code
    def setfam(self,fam):self.__fam=fam
    def getfam(self):return self.__fam
    def setimya(self,imya):self.__imya=imya
    def getimya(self):return self.__imya
    def setotch(self,otch):self.__otch=otch
    def getotch(self):return self.__otch
    def setcomment(self,comment):self.__comment=comment
    def getcode(self):return self.__code
    def setpassport(self,passport):self.__passport=passport
    def getpassport(self):return self.__passport
    def getfullname(self):return self.__fam+" "+self.__imya+" "+self.__otch
 
 
class Nomer:
    def __init__(self, code=0, vmestimost='', comfort='', price=''):
            self.setcode(code)
            self.setvmestimost(vmestimost)
            self.setcomfort(comfort)
            self.setprice(price)
    def setcode(self,code):self.__code=code
    def getcode(self):return self.__code
    def setvmestimost(self,vmestimost):self.__vmestimost=vmestimost
    def getvmestimost(self):return self.__vmestimost
    def setcomfort(self, comfort):self.__comfort=comfort
    def getcomfort(self):return self.__comfort
    def setprice(self, price):self.__price=price
    def getprice(self):return self.__price
 
 
class Posel:
    def __init__(self, Nomer=None, data_posel='', data_osvob='', primech=""):
            
            self.__klients=[]
            self.setnomer(Nomer)
            self.setdata_posel(data_posel)
            self.setdata_osvob(data_osvob)
            self.setprimech(primech)
  
    def setklients(self,value):self.__klients=value
    def appendklient(self,value):self.__klients.append(value)
    def getklients(self):return self.__klients
    def setnomer(self,Nomer):self.__Nomer=Nomer
    def getnomer(self):return self.__Nomer
    def setdata_posel(self,data_posel):self.__data_posel=data_posel
    def getdata_posel(self):return self.__data_posel
    def setdata_osvob(self,data_osvob):self.__data_osvob=data_osvob
    def getdata_osvob(self):return self.__data_osvob
    def setprimech(self,primech):self.__primech=primech
    def getprimech(self):return self.__primech
    
 
 
class Gostinica:
    def __init__(self,datafile='gostinica.xml'):
        self.__datafile=datafile
        self.__klients=[]
        self.__nomers=[]
        self.__posels=[]
    def appendklient(self,value):self.__klients.append(value)
    def appendnomer(self,value):self.__nomers.append(value)
    def appendposel(self,value):self.__posels.append(value)
    def getklients(self):return self.__klients
    def getnomers(self):return self.__nomers
    def getposels(self):return self.__posels
    def readdata(self):
        db, conn, curs=create(self.__datafile)
        curs.execute('select code,fam,imya,otch,comment,passport from klient')
        data=curs.fetchall()
        for r in data:self.appendklient(klient(r[0],r[1],r[2],r[3],r[4],r[5]))
        curs.execute('code,vmestimost,comfort,price from nomer')
        data=curs.fetchall()
        for r in data:self.appendnomer(nomer(r[0],r[1],r[2],r[3]))
        curs.execute('select code,nomer, data_posel,data_osvob,primech from posel')
        data=curs.fetchall()
        for r in data:
          self.appendposel(posel(code=r[0],nomer=r[1],data_posel=r[2],data_osvob=r[3],primech=r[4]))
          l=[p for p in self.__nomers() if p.getcode()==r[4]]
          if l:self.getposels()[-1].setnomer(l[0])
        curs.execute('select posel,klient from posel_klient')
        data=curs.fetchall()
        for r in data:
          l1=[p for p in h.getpoesels() if p.getcode()==r[0]]
          l2=[p for p in h.getklients() if p.getcode()==r[1]]
          if l2 and l1:l1[0].appendklient(l2[0])
        close(db, conn, curs)
        
        
        
 
    def getposelklient(self):
        for a in self.getposels():
            print len(a.getklients())
            print a.getdata_posel(), a.getdata_osvob(), a.getnomer().getprice()
            for c in a.getklients():
                print c.getfullname()
    
if __name__ == "__main__":
    h=Gostinica()
    h.readdata()
    h.getposelklient()
connect.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# -*- coding: cp1251 -
import os
import sqlite3 as db
sql = """
RAGMA foreign_keys = ON;
 
create table klient
(code integer primary key,
 fam text,
 imya text,
 otch text,
 comment text,
 passport text);
 
create table nomer
(code integer primary key,
  vmestimost text,
  comfort text,
  price text);
 
create table posel
(code integer primary key,
 nomer text,
 data_posel text,
 data_osvob text,
 primech text);
 nomer integer references nomer(code) on update cascade on delete set null);
 
create table posel_klient
 (code integer primary key autoincrement,
 posel integer references nomer(code) on update cascade on delete cascade,
 klient integer references klient(code) on update cascade on delete cascade,
 unique(posel,klient));
 
insert into klient(fam,imya,otch,comment,passport) values(Иванов’,’Иван’,’Иванович’,’Обычный клиент’,’6415 234567 Выдан 21 октября’);
insert into klient(fam,imya,otch,comment,passport) values(’Николаев’,’Николаq’,’Николаевич’,’Лучший клиент’,’6417 674578 Выдан 19 ноября’);
insert into klient(fam,imya,otch,comment,passport) values(’Андреев’,’Андрей’,’Андреевич’,’Лучший клиент’,’6419 987560 Выдан 14 января’);
 
 
insert into nomer(vmestimost,comfort,price) values(’трёхместный’,’стандарт’,'1200 руб');
insert into nomer(vmestimost,comfort,price) values(’двухместный’,’люкс’,'2500 руб');
insert into nomer(vmestimost,comfort,price) values(’одноместный’,’полулюкс’,'1800 руб');
 
insert into posel(nomer, data_posel,data_osvob,primech) values(’1’,’12.09.2015’,’19.09.2015’,’без обеда’);
insert into posel(nomer, data_posel,data_osvob,primech) values(’2’,’08.09.2015’,’16.09.2015’,’без обеда’);
 
 
insert into posel_klient(klient,nomer) values(’1’,’1’);
insert into posel_klient(klient,nomer) values(’2’,’3’);
insert into posel_klient(klient,nomer) values(’3’,’2’);
 
"""
def create(dbfile):
  create = not os.access(dbfile, os.R_OK)
  conn = db.connect(dbfile)
  curs = conn.cursor()
  if create:
    try:
      curs.executescript(sql)
    except db.DatabaseError, x:
      print x
      conn.rollback()
    else:
      conn.commit()
  return (db, conn, curs)
def close(db, conn, curs):
  conn.close()
gostinica.xml

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<gostinica>
 
  
 <Klient code="1" fam="Иванов" imya="Иван" otch="Иванович" comment="Обычный клиент" passport="6415 234567 Выдан 21 октября"/>
  
 <Klient code="2" fam="Николаев" imya="Николай" otch="Николаевич" comment="Лучший клиент" passport="6417 674578 Выдан 19 ноября"/>
  
 <Klient code="3" fam="Андреев" imya="Андрей" otch="Андреевич" comment="Лучший клиент" passport="6419 987560 Выдан 14 января"/>
 
  
 
 <Nomer code="1" vmestimost="трёхместный" comfort="стандарт" price="1200 руб"/>
 <Nomer code="2" vmestimost="двухместный" comfort="люкс" price="2500 руб"/>
 <Nomer code="3" vmestimost="одноместный" comfort="полулюкс" price="1800 руб"/>
<Posel nomer='1' data_posel='12.09.2015' data_osvob='19.09.2015' primech="без обеда">
  <Klient code="1"/>
  <Klient code="3"/>
 </Posel>
 <Posel nomer='2' data_posel='08.09.2015' data_osvob='16.09.2015' primech="без обеда">
  <Klient code="2"/>
  
</Posel>
 
 
</gostinica>

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Миниатюры
Написать функции для считывания данных о выбранных сущностях из базы данных SQLite  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2016, 22:43
Ответы с готовыми решениями:

Написать функции для считывания и записи данных о выбранных сущностях в файл в формате XML
Написать функции для считывания и записи данных о выбранных сущностях в файл в...

Обработка базы данных Титаника для подготовки к реализации нейронной сети
Я решил сделать нейронную сеть, реализовать на Python Backpropagation algorithm...

Восстановить поврежденный файл базы данных SQLite (сделать дамп запароленного файла базы данных)
Вообщем не понятно после чего перестал открываться файл базы данных с ошибкой -...

Постолбцовое отображение данных из базы данных SQLite
Уважаемые форумчане, помогите пожалуйста. Необходимо вывести данные из таблицы...

Вывод данных из базы данных SQLite
Здравствуйте уважаемые форумчане! Делаю программу для работы с базой данных...

1
Zuzik
294 / 252 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
14.02.2016, 12:24 2

Не по теме:

зачем я открывал эту тему.... Зачем... Мне кошмары снится будут.


По теме теперь. Прочитайте что такое PEP8, про декоратор @property, писать русские слова английскими буквами это признак очень дурного тона.
И после этого напишите, что именно у вас не получается сделать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2016, 12:24

Ускорение считывания из базы данных
Добрый день, подключил базу данных основанную на службах в свою программу,...

Добавить в программу две функции: для считывания и записи данных в файл в бинарном режиме
Усовершенствовать программу дополнив две функции: для считывания и записи...

Удаление из базы данных выбранных строк?
Собственно сабж! Я собственно ламер ушастый в этих вопросах! :-) Задача...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru