Advertisement
Guest User

Untitled

a guest
Mar 12th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.61 KB | None | 0 0
  1. #!/usr/bin/python
  2. import psycopg2
  3. import sys
  4. import uuid
  5.  
  6. FLIGHT_HOST = "127.0.0.1"
  7. FLIGHT_DBNAME = "fly"
  8. FLIGHT_USER = "postgres"
  9. FLIGHT_PASS = "pass"
  10.  
  11. HOTEL_HOST = FLIGHT_HOST
  12. HOTEL_DBNAME = "hotel"
  13. HOTEL_USER = FLIGHT_USER
  14. HOTEL_PASS = FLIGHT_PASS
  15.  
  16.  
  17. def get_flight_conn(autocommit=True):
  18.     conn = psycopg2.connect(host=FLIGHT_HOST, dbname=FLIGHT_DBNAME, user=FLIGHT_USER, password=FLIGHT_PASS)
  19.     conn.autocommit = autocommit
  20.     return conn
  21.  
  22. def get_hotel_conn(autocommit=True):
  23.     conn = psycopg2.connect(host=HOTEL_HOST, dbname=HOTEL_DBNAME, user=HOTEL_USER, password=HOTEL_PASS)
  24.     conn.autocommit = autocommit    
  25.     return conn
  26.  
  27. def insert_flight(conn, client_name, number, from_airport, to_airport, date):
  28.     cur = conn.cursor()
  29.     cur.execute('INSERT INTO Booking (client_name, fly_number, from_airport, to_airport, date)' +
  30.                 " VALUES ('{}', '{}', '{}', '{}', DATE('{}'));".format(client_name, number,
  31.                                                                        from_airport, to_airport, date))
  32.  
  33.     cur.close()
  34.  
  35. def insert_hotel(conn, client_name, hotel_name, arrival, departure):
  36.     cur = conn.cursor()
  37.     cur.execute('INSERT INTO Booking (client_name, hotel_name, arrival, departure)' +
  38.                 " VALUES ('{}', '{}', DATE('{}'), DATE('{}'));".format(client_name, hotel_name,
  39.                                                                        arrival, departure))
  40.  
  41.     cur.close()
  42.  
  43.  
  44. def begin_transaction_raw(conn):
  45.     cur = conn.cursor()
  46.     cur.execute("BEGIN;")
  47.     cur.close()
  48.  
  49. def prepare_transaction_raw(conn, id_):
  50.     cur = conn.cursor()
  51.     cur.execute("PREPARE TRANSACTION '{}';".format(id_))
  52.     cur.close()
  53.  
  54. def commit_raw(conn, id_):
  55.     cur = conn.cursor()
  56.     cur.execute("COMMIT PREPARED '{}';".format(id_))
  57.     cur.close()
  58.  
  59.  
  60. def rollback_raw(conn, id_):
  61.     cur = conn.cursor()
  62.     cur.execute("ROLLBACK PREPARED '{}';".format(id_))
  63.     cur.close()
  64.  
  65.  
  66. if __name__ == '__main__':
  67.     conn = get_flight_conn()
  68.     conn2 = get_hotel_conn()
  69.  
  70.     begin_transaction_raw(conn)
  71.     begin_transaction_raw(conn2)
  72.  
  73.     insert_flight(conn, sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5])
  74.     insert_hotel(conn2, sys.argv[1], sys.argv[6], sys.argv[7], sys.argv[8])
  75.  
  76.     id_1 = str(uuid.uuid4())
  77.     id_2 = str(uuid.uuid4())
  78.  
  79.     try:
  80.         prepare_transaction_raw(conn, id_1)
  81.         prepare_transaction_raw(conn2, id_2)
  82.  
  83.         commit_raw(conn, id_1)
  84.         commit_raw(conn2, id_2)
  85.     except:
  86.         rollback_raw(conn, id_1)
  87.         rollback_raw(conn2, id_2)
  88.  
  89.     conn.close()
  90.     conn2.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement