Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.25 KB | None | 0 0
  1. import cx_Oracle
  2.  
  3. OK = (0, "")
  4. NO_CITIZEN = (1, "No citizen")
  5. PLATE_EXISTS = (2, "Plate exists")
  6. NOTHING_TO_DO = (3, "Nothing to do")
  7.  
  8. class Vehicle():
  9.  
  10.     id = 0
  11.     plate = ''
  12.     model = ''
  13.     citizen_id = 0
  14.  
  15.     def __init__(self, id, plate, model, citizen_id):
  16.         self.id = id
  17.         self.plate = plate
  18.         self.model = model
  19.         self.citizen_id = citizen_id
  20.  
  21.     def __str__(self):
  22.         return "%d\t%d\t%s\t%s" % (self.id, self.citizen_id, self.plate, self.model)
  23.  
  24. class Citizen():
  25.  
  26.     id = 0
  27.     name = ''
  28.     bdate = ''
  29.  
  30.     def __init__(self, id, name, bdate):
  31.         self.id = id
  32.         self.name = name
  33.         self.bdate = bdate
  34.  
  35.     def __str__(self):
  36.         return "%d\t%s\t%s" % (self.id, self.bdate, self.name)
  37.  
  38.  
  39. class Db():
  40.  
  41.     __db = None
  42.    
  43.     def __init__(self):
  44.         self.__db = cx_Oracle.connect('usr', 'passwd', 'localhost:1521/XE')
  45.         self.__db.autocommit = True
  46.  
  47.     def get_id_by_plate(self, plate):
  48.         c = self.__db.cursor()
  49.         c.execute()
  50.  
  51.     def get_max_vehicle_id(self):
  52.         c = self.__db.cursor()
  53.         c.execute('select max(id) from vehicle')
  54.         mx = 0
  55.         for row in c:
  56.             mx = row[0]
  57.         c.close()
  58.         return mx
  59.  
  60.     def get_max_citizen_id(self):
  61.         c = self.__db.cursor()
  62.         c.execute('select max(id) from citizen')
  63.         mx = 0
  64.         for row in c:
  65.             mx = row[0]
  66.         c.close()
  67.         return mx
  68.  
  69.     def exist_vehicle(self, plate):
  70.         c = self.__db.cursor()
  71.         c.execute('select * from vehicle where to_char(plate) = \'%s\'' % plate)
  72.         c.fetchall()
  73.         result = c.rowcount > 0
  74.         c.close()
  75.         return result
  76.  
  77.     def exist_citizen(self, citizen_id):
  78.         c = self.__db.cursor()
  79.         c.execute('select * from citizen where id = %d' % citizen_id)
  80.         c.fetchall()
  81.         result = c.rowcount > 0
  82.         c.close()
  83.         return result
  84.    
  85.     def get_vehicles(self):
  86.         c = self.__db.cursor()
  87.         c.execute('select * from vehicle')
  88.         vehs = []
  89.         for row in c:
  90.             vehs.append(Vehicle(row[0], row[1], row[2], row[3]))
  91.         c.close()
  92.         return vehs
  93.  
  94.     def get_citizens(self):
  95.         c = self.__db.cursor()
  96.         c.execute('select * from citizen')
  97.         cits = []
  98.         for row in c:
  99.             cits.append(Citizen(row[0], row[1], row[2]))
  100.         c.close()
  101.         return cits
  102.  
  103.     def add_vehicle(self, vehicle):
  104.         plate_unique = not self.exist_vehicle(vehicle.plate)
  105.         if plate_unique:
  106.             citizen_exist = self.exist_citizen(vehicle.citizen_id)
  107.             if citizen_exist:
  108.                 v_id = self.get_max_vehicle_id() + 1
  109.                 c = self.__db.cursor()
  110.                 query = 'insert into vehicle (id, plate, model, citizen_id) values (%d, \'%s\', \'%s\', %d)'
  111.                 query = query % (v_id, vehicle.plate, vehicle.model, vehicle.citizen_id)
  112.                 print(query)
  113.                 c.execute(query)
  114.                 c.close()
  115.                 return OK
  116.             else:
  117.                 return NO_CITIZEN
  118.         else:
  119.             return PLATE_EXISTS
  120.  
  121.  
  122.     def add_citizen(self, citizen):
  123.         c_id = self.get_max_citizen_id() + 1
  124.         c = self.__db.cursor()
  125.         to_date = "to_date('%s', 'dd.mm.yyyy')" % citizen.bdate
  126.         query = 'insert into citizen (id, name, naissance) values (%d, \'%s\', %s)' % (c_id, citizen.name, to_date)
  127.         c.execute(query)
  128.         c.close()
  129.         return OK
  130.  
  131.     def update_vehicle(self, vehicle):
  132.         plate_exists = self.exist_vehicle(vehicle.plate)
  133.         if plate_exists:
  134.             citizen_exists = self.exist_citizen(vehicle.citizen_id)
  135.             if citizen_exists:
  136.                 c = self.__db.cursor()
  137.                 query = 'update vehicle set model = \'%s\', citizen_id = %d where to_char(plate) = \'%s\''
  138.                 query = query % (vehicle.model, vehicle.citizen_id, vehicle.plate)
  139.                 print(query)
  140.                 c.execute(query)
  141.                 c.close()
  142.                 return OK
  143.             else:
  144.                 return NO_CITIZEN
  145.         else:
  146.             return NOTHING_TO_DO
  147.  
  148.     def update_citizen(self, citizen):
  149.         citizen_exists = self.exist_citizen(citizen.id)
  150.         if citizen_exists:
  151.             c = self.__db.cursor()
  152.             query = 'update citizen set name = \'%s\', naissance = %s where id = %d'
  153.             to_date = "to_date('%s', 'dd.mm.yyyy')" % citizen.bdate
  154.             query = query % (citizen.name, to_date, citizen.id)
  155.             print(query)
  156.             c.execute(query)
  157.             c.close()
  158.             return OK
  159.         else:
  160.             return NO_CITIZEN
  161.  
  162.     def delete_vehicle(self, vehicle):
  163.         plate_exists = self.exist_vehicle(vehicle.plate)
  164.         if plate_exists:
  165.             c = self.__db.cursor()
  166.             query = 'delete from vehicle where to_char(plate) = \'%s\'' % vehicle.plate
  167.             print(query)
  168.             c.execute(query)
  169.             c.close()
  170.             return OK
  171.         else:
  172.             return NOTHING_TO_DO
  173.  
  174.     def delete_citizen(self, citizen):
  175.         citizen_exists = self.exist_citizen(citizen.id)
  176.         if citizen_exists:
  177.             c = self.__db.cursor()
  178.             c.execute('delete from vehicle where citizen_id = %d' % citizen.id)
  179.             c.close()
  180.             c = self.__db.cursor()
  181.             c.execute('delete from citizen where id = %d' % citizen.id)
  182.             c.close()
  183.             return OK
  184.         else:
  185.             return NOTHING_TO_DO
  186.            
  187.        
  188.  
  189.  
  190. if __name__ == "__main__":
  191.     db = Db()
  192.  
  193.     for v in db.get_vehicles():
  194.         print(v)
  195.  
  196.     for c in db.get_citizens():
  197.         print(c)
  198.     print(db.exist_vehicle("289FKDPLC"))
  199.     print(db.exist_citizen(45))
  200.  
  201.     print(db.get_max_vehicle_id())
  202.  
  203.     print(db.add_vehicle(Vehicle(0, "FHUMANITY", "KamAZ 51324", 4)))
  204.  
  205.     #print(db.add_citizen(Citizen(0, 'Robert Trappe', '13.02.1995')))
  206.  
  207.     #print(db.update_vehicle(Vehicle(0, "FHUMANITY", 'Renault Logan', 4)))
  208.  
  209.     #print(db.update_citizen(Citizen(7, 'Steve Poubelle', '18.01.1991')))
  210.  
  211.     #print(db.delete_vehicle(Vehicle(0, "ACIDK1NGG", '', 0)))
  212.  
  213.     print(db.delete_citizen(Citizen(4, '', '')))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement