nie wiem co kanoniczny sposób jest jednak oto sposób sprawdzić, czy baza danych istnieje, sprawdzając na liście baz danych.
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))
Oto alternatywna metoda, jeśli nie trzeba wiedzieć, czy baza danych została utworzona, czy nie.
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))
Mam już pulę bazy danych, więc jeśli utworzę uniwersalne zapytanie, wybiorę je i nie utworzę tego, którego chcę. Miałem nadzieję, że istnieje sqlalchemy odpowiednik mysql jeśli nie istnieje utworzyć kwerendę bazy danych. – Herb21
Przez "uniwersalny" mam na myśli, że działa na wszystkich bazach danych SQL - nie wiem, których backendów używasz. 'create_engine (my_target_dsn) .execute ('select 1')' nie będzie kolidować z twoją istniejącą pulą. –
moje złe, że Ci się pomyślałem, ale wydawało się to tak proste i nie myślałem, że to zadziała. przy okazji im przy użyciu Pythona i sqlalchemy – Herb21