82 lines
2.1 KiB
Python
82 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
import sys
|
|
|
|
PROFILES = [
|
|
{
|
|
'label': 'development',
|
|
'host': '10.1.1.100',
|
|
'port': 3306,
|
|
'name': 'infogenie-test',
|
|
'user': 'infogenie-test',
|
|
'password': 'infogenie-test',
|
|
},
|
|
{
|
|
'label': 'production',
|
|
'host': '192.168.1.100',
|
|
'port': 3306,
|
|
'name': 'infogenie',
|
|
'user': 'infogenie',
|
|
'password': 'infogenie',
|
|
},
|
|
]
|
|
|
|
try:
|
|
import pymysql
|
|
DRIVER_NAME = 'pymysql'
|
|
except ImportError:
|
|
try:
|
|
import mysql.connector as mysql_connector
|
|
DRIVER_NAME = 'mysql.connector'
|
|
except ImportError:
|
|
print('missing_driver: install pymysql or mysql-connector-python')
|
|
sys.exit(2)
|
|
|
|
|
|
def connect_and_check(profile):
|
|
label = profile['label']
|
|
host = profile['host']
|
|
port = profile['port']
|
|
name = profile['name']
|
|
user = profile['user']
|
|
password = profile['password']
|
|
|
|
print(f'[{label}] target={host}:{port} db={name} user={user}')
|
|
|
|
try:
|
|
if DRIVER_NAME == 'pymysql':
|
|
conn = pymysql.connect(
|
|
host=host,
|
|
port=port,
|
|
user=user,
|
|
password=password,
|
|
database=name,
|
|
connect_timeout=5,
|
|
charset='utf8mb4',
|
|
)
|
|
else:
|
|
conn = mysql_connector.connect(
|
|
host=host,
|
|
port=port,
|
|
user=user,
|
|
password=password,
|
|
database=name,
|
|
connection_timeout=5,
|
|
)
|
|
|
|
with conn.cursor() as cursor:
|
|
cursor.execute('SELECT DATABASE(), CURRENT_USER(), VERSION()')
|
|
row = cursor.fetchone()
|
|
conn.close()
|
|
print(f'[{label}] mysql_ok driver={DRIVER_NAME} result={row!r}')
|
|
return True
|
|
except Exception as exc:
|
|
print(f'[{label}] mysql_fail driver={DRIVER_NAME} err={exc}')
|
|
return False
|
|
|
|
|
|
if __name__ == '__main__':
|
|
ok = True
|
|
for profile in PROFILES:
|
|
ok = connect_and_check(profile) and ok
|
|
sys.exit(0 if ok else 1)
|