Как создать db mysql с sqlalchemy

Мне нужно создать db в mysql, используя sqlalchemy, я могу подключиться к db, если он уже существует, но я хочу иметь возможность создать его, если он не существует. это мои таблицы:

#def __init__(self): Base = declarative_base() class utente(Base): __tablename__="utente" utente_id=Column(Integer,primary_key=True) nome_utente=Column(Unicode(20)) ruolo=Column(String(10)) MetaData.create_all() def __repr(self): return "utente: {0}, {1}, id: {2}".format(self.ruolo,self.nome_utente,self.utente_id) class dbmmas(Base): __tablename__="dbmmas" db_id=Column(Integer,primary_key=True,autoincrement=True) nome_db=Column(String(10)) censimento=Column(Integer) versione=Column(Integer) ins_data=Column(DateTime) mod_data=Column(DateTime) ins_utente=Column(Integer) mod_utente=Column(Integer) MetaData.create_all() def __repr(self): return "dbmmas: {0}, censimento {1}, versione {2}".format(self.nome_db,self.censimento,self.versione) class funzione(Base): __tablename__="funzione" funzione_id=Column(Integer,primary_key=True,autoincrement=True) categoria=Column(String(10)) nome=Column(String(20)) def __repr__(self): return "funzione:{0},categoria:{1},id:{2} ".format(self.nome,self.categoria,self.funzione_id) class profilo(Base): __tablename__="rel_utente_funzione" utente_id=Column(Integer,primary_key=True) funzione_id=Column(Integer,primary_key=True) amministratore=Column(Integer) MetaData.create_all() def __repr(self): l=lambda x: "amministratore" if x==1 else "generico" return "profilo per utente_id:{0}, tipo: {1}, funzione_id: {2}".format(self.utente_id,l(self.amministratore),self.funzione_id) class aree(Base): __tablename__="rel_utente_zona" UTB_id=Column(String(10), primary_key=True) # "in realta' si tratta della seatureSignature della feature sullo shapefile" utente_id=Column(Integer, primary_key=True) amministratore=Column(Integer) MetaData.create_all() def __repr(self): l=lambda x: "amministratore" if x==1 else "generico" return "zona: {0}, pe utente_id:{1}, {2}".format(self.UTB_id,self.utente_id,l(self.amministratore)) class rel_utente_dbmmas(Base): __tablename__="rel_utente_dbmmas" utente_id=Column(Integer,primary_key=True) db_id=Column(Integer,primary_key=True) amministratore=(Integer) MetaData.create_all() def __repr(self): l=lambda x: "amministratore" if x==1 else "generico" return "dbregistrato: {0} per l'utente{1} {2}".format(self.db_id,self.utente_id,l(self.amministratore)) 

3 Solutions collect form web for “Как создать db mysql с sqlalchemy”

Чтобы создать базу данных mysql вы просто подключаетесь к серверу для создания базы данных:

 import sqlalchemy engine = sqlalchemy.create_engine('mysql://user:password@server') # connect to server engine.execute("CREATE DATABASE dbname") #create db engine.execute("USE dbname") # select new db # use the new db # continue with your work... 

конечно, у вашего пользователя должно быть разрешение на создание баз данных.

 CREATE DATABASE IF NOT EXISTS dbName; 

Я не знаю, каков это канонический способ, но вот способ проверить, существует ли база данных, проверяя список баз данных и создавая ее, если она не существует.

 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)) 

Вот альтернативный метод, если вам не нужно знать, была ли создана база данных или нет.

 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)) 
  • Получение SQLAlchemy для выпуска CREATE SCHEMA на create_all
  • Игнорировать блокировку в базе данных MYSQL в запросе Sqlalchemy
  • Сложное ограничение внешнего ключа в SQLAlchemy
  • Почему методы сеанса несвязаны в sqlalchemy с использованием sqlite?
  • Когда использовать SQLAlchemy .get () vs .filter (Foo.ID == primary_key_id) .first ()
  • sqlite удалить символы un utf-8
  • Переопределение __cmp__, __eq__ и __hash__ для декларативной базы SQLAlchemy
  • SQLAlchemy: выбор столбцов объекта в запросе
  • Python - лучший язык программирования в мире.