есть эффективный и простой способ выполнения операторов, аналогичных:
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 также хотел бы, чтобы база данных оставалась достаточно эффективной, поэтому я предполагаю, что потребуется некоторая динамическая обработка типа данных?
просто интересно, если что-то вроде этого существует на данный момент, и если не искать совета о том, как лучше всего его достичь....
Я считаю, что вы ищете систему реляционного сопоставления объектов.
Для 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)>]