in chaostoolkit-examples/cloudsql-cloudrun-dns-fault-injection/app/cloudruncode/main.py [0:0]
def connect_tcp_socket() -> sqlalchemy.engine.base.Engine:
"""Initializes a TCP connection pool for a Cloud SQL instance of MySQL."""
# Note: Saving credentials in environment variables is convenient, but not
# secure - consider a more secure solution such as
# Cloud Secret Manager (https://cloud.google.com/secret-manager) to help
# keep secrets safe.
db_host = os.environ.get("db_host")
db_name = "mysql"
db_port = 3306
# IP lookup from hostname
print(f'The {db_host} IP Address is {socket.gethostbyname(db_host)}')
print("2------------------")
project_id = os.environ.get("project_id")
# Build the resource name of the secret version.
pool = sqlalchemy.create_engine(
# Equivalent URL:
# mysql+pymysql://<db_user>:<db_pass>@<db_host>:<db_port>/<db_name>
sqlalchemy.engine.url.URL.create(
drivername="mysql+pymysql",
username=get_secret(f"projects/{project_id}/secrets/db-user/versions/1"),
password=get_secret(f"projects/{project_id}/secrets/db-password/versions/1"),
host=db_host,
port=db_port
),
# ...
)
res={}
with pool.connect() as db_conn:
# query and fetch ratings table
try:
res= db_conn.execute(sqlalchemy.text("CREATE DATABASE testdb;"))
except:
print("database already created")
try:
res= db_conn.execute(sqlalchemy.text("USE testdb;"))
except:
print("already in database")
try:
res= db_conn.execute(sqlalchemy.text("CREATE TABLE employeetable (name VARCHAR(255), id INT)"))
except:
print("Already table is there")
try:
res= db_conn.execute(sqlalchemy.text("INSERT INTO employeetable (name, id) VALUES ('Peter', 1)"))
except:
print("Already data is present")
try:
res= db_conn.execute(sqlalchemy.text("INSERT INTO employeetable (name, id) VALUES ('John', 2)"))
except:
print("Already data is present")
try:
results = db_conn.execute(sqlalchemy.text("SELECT * FROM employeetable WHERE id=1")).fetchall()
except:
print("Select statement not working")
return str(results)