TODO: Create a concrete example using transactions add this example to https://github.com/csiglab/cs-analyst-labs.
# server
import socket
import cx_Oracle
conn = cx_Oracle.connect("user/password@host:port/service_name") # Maintain a single connection
cursor = conn.cursor()
server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
server.bind("/tmp/oracle_db_socket")
server.listen(5)
while True:
client, _ = server.accept()
query = client.recv(1024).decode()
cursor.execute(query)
result = cursor.fetchall()
client.send(str(result).encode())
client.close()
## client
import socket
client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
client.connect("/tmp/oracle_db_socket")
client.send("SELECT * FROM employees".encode())
response = client.recv(4096).decode()
print(response)