Ich weiß nicht, was der üblicher Weg, aber hier ist ein Weg, um zu überprüfen, ob eine Datenbank durch Abgleich mit der Liste der Datenbanken vorhanden ist.
from sqlalchemy import create_engine
# This engine just used to query for list of databases
mysql_engine = create_engine('mysql://{0}:{1}@{2}:{3}'.format(user, pass, host, port))
# Query for existing databases
existing_databases = mysql_engine.execute("SHOW DATABASES;")
# Results are a list of single item tuples, so unpack each tuple
existing_databases = [d[0] for d in existing_databases]
# Create database if not exists
if database not in existing_databases:
mysql_engine.execute("CREATE DATABASE {0}".format(database))
print("Created database {0}".format(database))
# Go ahead and use this engine
db_engine = create_engine('mysql://{0}:{1}@{2}:{3}/{4}'.format(user, pass, host, port, db))
Hier ist eine alternative Methode, wenn Sie nicht wissen müssen, ob die Datenbank erstellt wurde oder nicht.
from sqlalchemy import create_engine
# This engine just used to query for list of databases
mysql_engine = create_engine('mysql://{0}:{1}@{2}:{3}'.format(user, pass, host, port))
# Query for existing databases
mysql_engine.execute("CREATE DATABASE IF NOT EXISTS {0} ".format(database))
# Go ahead and use this engine
db_engine = create_engine('mysql://{0}:{1}@{2}:{3}/{4}'.format(user, pass, host, port, db))
ich habe einen Pool von Datenbank bereits in existance so, wenn ich eine Universal-Abfrage erstellen, wird es diese und nicht zu schaffen, die eine will ich holen. Ich hatte gehofft, dass es eine SQL-Syntax gibt, die mysql entspricht, wenn keine Datenbankabfrage existiert. – Herb21
Mit "universal" ich meine es funktioniert auf allen SQL-Datenbanken - ich weiß nicht, welche Backend (s) Sie verwenden. 'create_engine (my_target_dsn) .execute ('select 1')' beeinträchtigt nicht den vorhandenen Pool. –
mein schlechtes ich bekomme dich Ich dachte, aber es schien so klar und einfach Ich dachte nicht, es würde funktionieren. Übrigens benutze ich Python und Sqlalchemy – Herb21