繁体   English   中英

是否有一种简单/有效的方法可以动态地构建一个mysql数据库“构建它自己的结构”,因为它将名称/值对保存到光盘?

[英]is there an easy/efficient way to make a mysql database dynamically 'build it's own structure' as it saves name/value pairs to disc?

是否有任何有效和简单的方法来执行类似于以下的语句:

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

对于执行插入语句的列。

我以为它会复杂得多,但仅出于解释的目的,我想我正在寻找类似的东西。

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库?

基本上,我希望“字典”的“ id”定义列,并在不存在的情况下创建它们。

我也希望数据库保持合理的效率,所以我想有必要动态处理数据类型?

只是想知道目前是否存在这样的事情,如果没有寻求关于如何最好地实现它的建议....

我相信你正在寻找一个对象关系映射系统。

对于Python,有几个可用的:

或者如果您正在建立一个网站,Django项目包括一个ORM系统: http//www.djangoproject.com/

为了简化过程,您可以在SQLAlchemy的顶部添加类似Elixir的内容: 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)>]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM