Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- # !/usr/bin/env python
- import sqlite3
- import socket
- import threading
- class server():
- server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- connections = []
- def __init__(self):
- self.server.bind(('0.0.0.0',4000))
- self.server.listen(3)
- def Querry(self,conn,addr,mode):
- while True:
- self.conn.send(str.encode("Welcome"))
- if self.check_identitiy():
- if mode == "s":
- self.conn.sendall(str.encode(str(Database.theitem[0])+str(Database.theitem[1])+str(Database.theitem[2])+str(Database.theitem[3])))
- self.conn.sendall(str.encode(str('S')))
- elif mode =="r":
- print('retriving\n')
- print(Database.retrive_item)
- if len(Database.retrive_item) <=1:
- break
- else:
- self.conn.sendall(str.encode(
- str(Database.retrive_item[0][0]) + str(Database.retrive_item[0][1]) + str(Database.retrive_item[0][2]) + str(
- Database.retrive_item[0][3])))
- self.conn.sendall(str.encode(str('R')))
- data=self.conn.recv(1024)
- if data.decode('utf-8')=="done":
- print('operation complete')
- break
- if not data:
- self.conn.close()
- break
- else:
- break
- print("in while loop")
- break
- return
- def check_identitiy(self):
- data = self.conn.recv(1024)
- value=data.decode('utf-8')
- print(self.addr)
- if value =="car111414":
- self.car=self.addr[0]
- return True
- elif value=="ele111414":
- self.elevator=self.addr[0]
- return True
- else:
- self.conn.sendall(str.encode(str('sorry you ate no authorized ')))
- return False
- def run(self,mode):
- while True:
- self.conn,self.addr=self.server.accept()
- Thread= threading.Thread(target=self.Querry,args=(self.conn,self.addr,mode))
- Thread.daemon=True
- Thread.start()
- self.connections.append(self.conn)
- print(self.connections)
- break
- class Database():
- db = sqlite3.connect('DataBase.db')
- c = db.cursor()
- theitem=[]
- def __init__(self):
- Database.c.execute(
- 'create table if not exists StorageData(id INTEGER,name text,describtion text,floor INTEGER,cell INTEGER,position text)')
- Database.c.execute("SELECT * FROM StorageData ORDER BY id DESC LIMIT 1")
- lastid = Database.c.fetchall()
- try:
- self.id=int(lastid[0][0])
- except:
- self.id = 0
- def store(self):
- self.name = input('item name: ')
- self.describtion = input('item description: ')
- self.floor = input('floor number: ')
- self.cell = input('cell number: ')
- self.position = input('position R/L: ')
- self.id += 1
- if self.detectavailability():
- Database.c.execute('insert into StorageData (id ,name ,describtion ,floor ,cell ,position ) values (?,?,?,?,?,?)',
- (self.id, self.name, self.describtion, self.floor, self.cell, self.position))
- Database.db.commit()
- else:
- print('this place is occupied')
- return
- Database.theitem = [self.id, self.floor, self.cell, self.position]
- def retrive(self):
- Database.retrive_item=[]
- self.itemname = input("please enter item name to search")
- Database.c.execute("SELECT * FROM StorageData WHERE name = ?", (self.itemname,))
- temp = Database.c.fetchall()
- for x in range(0, len(temp)):
- print("id : " + str(temp[x][0]) + " " + "name : " + temp[x][1])
- if len(temp) == 0:
- print('nothing found')
- else:
- self.idofitem = input("please enter the id of the item for retrival")
- Database.c.execute("SELECT * FROM StorageData WHERE id = ?", (self.idofitem,))
- #print( Database.c.fetchall())
- Database.retrive_item=Database.c.fetchall()
- Database.c.execute("DELETE from StorageData WHERE id = ?", (self.idofitem,))
- Database.db.commit()
- @staticmethod
- def showdata():
- Database.c = Database.db.execute('select * from StorageData order by id')
- temp = Database.c.fetchall()
- for x in range(0, len(temp)):
- print("id : " + str(temp[x][0]) + " " + "name : " + str(temp[x][1]) + " " + "describtion : "
- + str(temp[x][2]) + " " + "floor : " + str(temp[x][3]) + " " + "cell : " + str(temp[x][4])
- + " " + "position : " + str(temp[x][5]))
- def detectavailability(self):
- Database.c.execute('select * from StorageData where floor = ? AND cell = ? and position= ?',(self.floor, self.cell, self.position))
- tempdet = Database.c.fetchall()
- if len(tempdet) == 0:
- return True
- else:
- return False
- def DELETE(self):
- passW=input('please enter password')
- if passW== "111414":
- mode=input("type 1 for specific entry deletion or 2 to delete ENTIRE DATABASE!!")
- if mode=='1':
- self.delete_id = input("please enter the id of the item for deletion : \n --->")
- Database.c.execute("SELECT * FROM StorageData WHERE id = ?", (self.delete_id,))
- print(str(Database.c.fetchall())+' Item deleted')
- Database.c.execute("DELETE from StorageData WHERE id = ?", (self.delete_id,))
- Database.db.commit()
- elif mode=='2':
- Database.c.execute("DELETE from StorageData")
- Database.db.commit()
- item = Database()
- server = server()
- while (True):
- print('please choose what operation you want to execute: ')
- choice = input("type ( s ) for store , ( r ) for retrive , ( data ) to show database, (delete) to delete and ( x ) to exit: \n---> ")
- if choice == 's':
- item.store()
- server.run('s')
- elif choice == 'r':
- item.retrive()
- server.run('r')
- elif choice == 'data':
- item.showdata()
- elif choice=='delete':
- item.DELETE()
- elif choice == 'x':
- break
- else:
- print('invalid choice')
- Database.db.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement