Python 是否有一种简单/高效的方法动态创建mysql数据库';构建它';中国自身的结构';当它将名称/值对保存到光盘时?

Python 是否有一种简单/高效的方法动态创建mysql数据库';构建它';中国自身的结构';当它将名称/值对保存到光盘时?,python,mysql,dynamic,Python,Mysql,Dynamic,是否有任何有效且简单的方法来执行类似于以下内容的语句: 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='

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

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库可以处理该过程的方法

基本上,我希望“dictionary”的“id”定义列,如果它们不存在,则创建它们

我还希望数据库保持合理的效率,所以我想对数据类型进行一些动态处理也是必要的


只是想知道目前是否存在类似的情况,如果不寻求如何最好地实现它的建议……

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

对于Python,有两种方法可用:

  • 炼金术:
  • SQLObject:
或者,如果您正在构建网站,Django项目包括一个ORM系统:

为了简化这个过程,您可以在SQLAlchemy的基础上添加类似Elixir的东西:

您将得到如下代码:

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()
>电影(片名=u“Blade Runner”,年份=1982)
>>>session.commit()
或获取结果:

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