Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import psycopg2
- import sys
- import uuid
- FLIGHT_HOST = "127.0.0.1"
- FLIGHT_DBNAME = "fly"
- FLIGHT_USER = "postgres"
- FLIGHT_PASS = "pass"
- HOTEL_HOST = FLIGHT_HOST
- HOTEL_DBNAME = "hotel"
- HOTEL_USER = FLIGHT_USER
- HOTEL_PASS = FLIGHT_PASS
- def get_flight_conn(autocommit=True):
- conn = psycopg2.connect(host=FLIGHT_HOST, dbname=FLIGHT_DBNAME, user=FLIGHT_USER, password=FLIGHT_PASS)
- conn.autocommit = autocommit
- return conn
- def get_hotel_conn(autocommit=True):
- conn = psycopg2.connect(host=HOTEL_HOST, dbname=HOTEL_DBNAME, user=HOTEL_USER, password=HOTEL_PASS)
- conn.autocommit = autocommit
- return conn
- def insert_flight(conn, client_name, number, from_airport, to_airport, date):
- cur = conn.cursor()
- cur.execute('INSERT INTO Booking (client_name, fly_number, from_airport, to_airport, date)' +
- " VALUES ('{}', '{}', '{}', '{}', DATE('{}'));".format(client_name, number,
- from_airport, to_airport, date))
- cur.close()
- def insert_hotel(conn, client_name, hotel_name, arrival, departure):
- cur = conn.cursor()
- cur.execute('INSERT INTO Booking (client_name, hotel_name, arrival, departure)' +
- " VALUES ('{}', '{}', DATE('{}'), DATE('{}'));".format(client_name, hotel_name,
- arrival, departure))
- cur.close()
- def begin_transaction_raw(conn):
- cur = conn.cursor()
- cur.execute("BEGIN;")
- cur.close()
- def prepare_transaction_raw(conn, id_):
- cur = conn.cursor()
- cur.execute("PREPARE TRANSACTION '{}';".format(id_))
- cur.close()
- def commit_raw(conn, id_):
- cur = conn.cursor()
- cur.execute("COMMIT PREPARED '{}';".format(id_))
- cur.close()
- def rollback_raw(conn, id_):
- cur = conn.cursor()
- cur.execute("ROLLBACK PREPARED '{}';".format(id_))
- cur.close()
- if __name__ == '__main__':
- conn = get_flight_conn()
- conn2 = get_hotel_conn()
- begin_transaction_raw(conn)
- begin_transaction_raw(conn2)
- insert_flight(conn, sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5])
- insert_hotel(conn2, sys.argv[1], sys.argv[6], sys.argv[7], sys.argv[8])
- id_1 = str(uuid.uuid4())
- id_2 = str(uuid.uuid4())
- try:
- prepare_transaction_raw(conn, id_1)
- prepare_transaction_raw(conn2, id_2)
- commit_raw(conn, id_1)
- commit_raw(conn2, id_2)
- except:
- rollback_raw(conn, id_1)
- rollback_raw(conn2, id_2)
- conn.close()
- conn2.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement