Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 30

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

13.02.2016, 22:43. Показов 1964. Ответов 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>
Миниатюры
Написать функции для считывания данных о выбранных сущностях из базы данных SQLite  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2016, 22:43
Ответы с готовыми решениями:

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

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

Восстановить поврежденный файл базы данных SQLite (сделать дамп запароленного файла базы данных)
Вообщем не понятно после чего перестал открываться файл базы данных с ошибкой - &quot;database disk image is malformed&quot;. Нашел...

1
 Аватар для Zuzik
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
14.02.2016, 12:24

Не по теме:

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


По теме теперь. Прочитайте что такое PEP8, про декоратор @property, писать русские слова английскими буквами это признак очень дурного тона.
И после этого напишите, что именно у вас не получается сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2016, 12:24
Помогаю со студенческими работами здесь

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

Библиотеки для чтения базы данных sqlite
Здравствуйте. Я пишу консольное приложение win32! Я использую библиотеку sqlite3 для получения данных из БД, но эта библиотека слишком...

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

Построчное считывание данных из базы данных SQLite
Всем привет) Столкнулась с такой проблемой: получаю данные из бд SQLite через SQLiteDataReader с помощью метода GetValue(i). Но...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru