Advertisement
Guest User

program sql+ server

a guest
Jun 23rd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.58 KB | None | 0 0
  1. #!/usr/bin/python3
  2.  
  3. # !/usr/bin/env python
  4.  
  5. import sqlite3
  6. import socket
  7. import threading
  8.  
  9. class server():
  10.     server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  11.     connections = []
  12.     def __init__(self):
  13.         self.server.bind(('0.0.0.0',4000))
  14.         self.server.listen(3)
  15.  
  16.  
  17.     def Querry(self,conn,addr,mode):
  18.         while True:
  19.             self.conn.send(str.encode("Welcome"))
  20.             if self.check_identitiy():
  21.                 if mode == "s":
  22.                     self.conn.sendall(str.encode(str(Database.theitem[0])+str(Database.theitem[1])+str(Database.theitem[2])+str(Database.theitem[3])))
  23.                     self.conn.sendall(str.encode(str('S')))
  24.  
  25.                 elif mode =="r":
  26.                     print('retriving\n')
  27.                     print(Database.retrive_item)
  28.                     if len(Database.retrive_item) <=1:
  29.                         break
  30.                     else:
  31.                         self.conn.sendall(str.encode(
  32.                         str(Database.retrive_item[0][0]) + str(Database.retrive_item[0][1]) + str(Database.retrive_item[0][2]) + str(
  33.                         Database.retrive_item[0][3])))
  34.                         self.conn.sendall(str.encode(str('R')))
  35.                 data=self.conn.recv(1024)
  36.                 if data.decode('utf-8')=="done":
  37.                     print('operation complete')
  38.                     break
  39.  
  40.                 if not data:
  41.  
  42.                     self.conn.close()
  43.                     break
  44.                 else:
  45.                     break
  46.             print("in while loop")
  47.             break
  48.         return
  49.  
  50.  
  51.     def check_identitiy(self):
  52.         data = self.conn.recv(1024)
  53.         value=data.decode('utf-8')
  54.         print(self.addr)
  55.         if value =="car111414":
  56.             self.car=self.addr[0]
  57.             return True
  58.         elif value=="ele111414":
  59.             self.elevator=self.addr[0]
  60.             return True
  61.         else:
  62.             self.conn.sendall(str.encode(str('sorry you ate no authorized ')))
  63.             return False
  64.  
  65.  
  66.     def run(self,mode):
  67.         while True:
  68.             self.conn,self.addr=self.server.accept()
  69.             Thread= threading.Thread(target=self.Querry,args=(self.conn,self.addr,mode))
  70.             Thread.daemon=True
  71.             Thread.start()
  72.             self.connections.append(self.conn)
  73.             print(self.connections)
  74.             break
  75.  
  76.  
  77. class Database():
  78.     db = sqlite3.connect('DataBase.db')
  79.     c = db.cursor()
  80.     theitem=[]
  81.  
  82.     def __init__(self):
  83.  
  84.         Database.c.execute(
  85.             'create table if not exists StorageData(id INTEGER,name text,describtion text,floor INTEGER,cell INTEGER,position text)')
  86.  
  87.         Database.c.execute("SELECT * FROM StorageData ORDER BY id DESC LIMIT 1")
  88.         lastid = Database.c.fetchall()
  89.  
  90.         try:
  91.             self.id=int(lastid[0][0])
  92.         except:
  93.             self.id = 0
  94.  
  95.     def store(self):
  96.         self.name = input('item name: ')
  97.         self.describtion = input('item description: ')
  98.         self.floor = input('floor number: ')
  99.         self.cell = input('cell number: ')
  100.         self.position = input('position R/L: ')
  101.         self.id += 1
  102.         if self.detectavailability():
  103.             Database.c.execute('insert into StorageData (id ,name ,describtion ,floor ,cell ,position ) values (?,?,?,?,?,?)',
  104.                       (self.id, self.name, self.describtion, self.floor, self.cell, self.position))
  105.             Database.db.commit()
  106.  
  107.         else:
  108.             print('this place is occupied')
  109.             return
  110.         Database.theitem = [self.id, self.floor, self.cell, self.position]
  111.  
  112.  
  113.     def retrive(self):
  114.         Database.retrive_item=[]
  115.         self.itemname = input("please enter item name to search")
  116.         Database.c.execute("SELECT * FROM StorageData WHERE name = ?", (self.itemname,))
  117.         temp = Database.c.fetchall()
  118.         for x in range(0, len(temp)):
  119.             print("id : " + str(temp[x][0]) + "  " + "name : " + temp[x][1])
  120.         if len(temp) == 0:
  121.             print('nothing found')
  122.         else:
  123.             self.idofitem = input("please enter the id of the item for retrival")
  124.             Database.c.execute("SELECT * FROM StorageData WHERE id = ?", (self.idofitem,))
  125.             #print( Database.c.fetchall())
  126.             Database.retrive_item=Database.c.fetchall()
  127.             Database.c.execute("DELETE from StorageData WHERE id = ?", (self.idofitem,))
  128.             Database.db.commit()
  129.  
  130.     @staticmethod
  131.     def showdata():
  132.         Database.c = Database.db.execute('select * from StorageData order by id')
  133.         temp = Database.c.fetchall()
  134.         for x in range(0, len(temp)):
  135.             print("id : " + str(temp[x][0]) + "  " + "name : " + str(temp[x][1]) + "  " + "describtion : "
  136.                   + str(temp[x][2]) + "  " + "floor : " + str(temp[x][3]) + "  " + "cell : " + str(temp[x][4])
  137.                   + "  " + "position : " + str(temp[x][5]))
  138.  
  139.     def detectavailability(self):
  140.         Database.c.execute('select * from StorageData where floor = ? AND cell = ? and position= ?',(self.floor, self.cell, self.position))
  141.         tempdet = Database.c.fetchall()
  142.         if len(tempdet) == 0:
  143.             return True
  144.         else:
  145.             return False
  146.  
  147.     def DELETE(self):
  148.         passW=input('please enter password')
  149.         if passW== "111414":
  150.             mode=input("type 1 for specific entry deletion or 2 to delete ENTIRE DATABASE!!")
  151.             if mode=='1':
  152.                 self.delete_id = input("please enter the id of the item for deletion : \n --->")
  153.                 Database.c.execute("SELECT * FROM StorageData WHERE id = ?", (self.delete_id,))
  154.                 print(str(Database.c.fetchall())+'  Item deleted')
  155.                 Database.c.execute("DELETE from StorageData WHERE id = ?", (self.delete_id,))
  156.                 Database.db.commit()
  157.             elif mode=='2':
  158.                 Database.c.execute("DELETE from StorageData")
  159.                 Database.db.commit()
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166. item = Database()
  167. server = server()
  168. while (True):
  169.     print('please choose what operation you want to execute: ')
  170.     choice = input("type ( s ) for store , ( r ) for retrive , ( data ) to show database, (delete) to delete and ( x ) to exit:  \n---> ")
  171.     if choice == 's':
  172.         item.store()
  173.         server.run('s')
  174.     elif choice == 'r':
  175.         item.retrive()
  176.         server.run('r')
  177.     elif choice == 'data':
  178.         item.showdata()
  179.     elif choice=='delete':
  180.         item.DELETE()
  181.     elif choice == 'x':
  182.         break
  183.     else:
  184.         print('invalid choice')
  185.  
  186. Database.db.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement