Есть ли простой / эффективный способ динамически создать базу данных mysql, «построить свою собственную структуру», так как она сохраняет пары имя / значение на диск?

0

есть эффективный и простой способ выполнения операторов, аналогичных:

CREATE TABLE IF NOT EXISTS fubar ( id int, name varchar(80))

для столбцов при выполнении инструкций insert.

Я бы предположил, что это будет намного сложнее, но только ради объяснения, я думаю, я ищу что-то вроде....

IF NOT EXISTS
(
  SELECT * FROM information_schema.COLUMNS
  WHERE 
    COLUMN_NAME='new_column' AND 
    TABLE_NAME='the_table' AND 
    TABLE_SCHEMA='the_schema'
)
THEN
  ALTER TABLE `the_schema`.`the_table`
  ADD COLUMN `new_column` bigint(20) unsigned NOT NULL default 1;

альтернативно, существует ли способ библиотеки python, который может обрабатывать этот процесс?

в основном, я хочу, чтобы "идентификатор" словаря определял столбцы и создавал их, если они еще не существуют.

i также хотел бы, чтобы база данных оставалась достаточно эффективной, поэтому я предполагаю, что потребуется некоторая динамическая обработка типа данных?

просто интересно, если что-то вроде этого существует на данный момент, и если не искать совета о том, как лучше всего его достичь....

Теги:
dynamic

1 ответ

2
Лучший ответ

Я считаю, что вы ищете систему реляционного сопоставления объектов.

Для Python есть пара доступных:

Или, если вы создаете веб-сайт, проект Django включает в себя систему ORM: http://www.djangoproject.com/

Чтобы упростить процесс, вы можете добавить что-то вроде Elixir поверх SQLAlchemy: http://elixir.ematia.de/trac/wiki

Вы получите код следующим образом:

class Movie(Entity):
    title = Field(Unicode(30))
    year = Field(Integer)
    description = Field(UnicodeText)

Вот как вставить:

>>> Movie(title=u"Blade Runner", year=1982)
<Movie "Blade Runner" (1982)>
>>> session.commit()

Или получить результаты:

>>> Movie.query.all()
[<Movie "Blade Runner" (1982)>]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню