【问题标题】:Possible to programmatically ALTER multiple MySQL tables?可以以编程方式更改多个 MySQL 表吗?
【发布时间】:2011-05-01 03:26:01
【问题描述】:

我有多个 MySQL 表,其名称形式为 "Shard_0", "Shard_1", "Shard_2" ... "Shard_n",它们都具有相同的表结构。它们都存在于同一个数据库中。

假设我想在所有这些表中添加一列。有没有办法以编程方式做到这一点?

类似:

# pseudo code    
for i in range(n):
    tablename = "shard_"+str(i)
    ALTER TABLE tablename ...

有可能做这样的事情吗?如果需要,我需要什么语言和/或库?

谢谢

【问题讨论】:

    标签: python mysql database schema database-administration


    【解决方案1】:

    没问题。 Python 有几个第三方库可以连接到数据库。但是,如果您只需要这样做一次,最简单的方法是使用 python 脚本将 SQL 指令写入标准输出:

    for i in range(n):
        tablename = "shard_"+str(i)
        print 'ALTER TABLE tablename ...'
    

    然后像这样从 CLI 调用它:

    ./sqlgenscript.py | mysql -u username -p
    

    【讨论】:

      【解决方案2】:

      是的,可以,您可以使用 Python 的 MySqlDb 模块并编写类似于 sql 查询的查询并执行它们以更新表。看看这个:http://mysql-python.sourceforge.net/MySQLdb.html

      【讨论】:

        【解决方案3】:

        我认为您可以创建一个接受一个参数的例程,并将“i”作为参数发送给您的例程。然后你可以调用你的例程。

        致电test.My_Alter(i);

        其中 i=1,2,3,...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-06
          • 1970-01-01
          • 1970-01-01
          • 2019-12-01
          • 1970-01-01
          • 2023-03-16
          相关资源
          最近更新 更多