Можно программно изменить несколько таблиц MySQL? - PullRequest
2 голосов
/ 27 октября 2010

У меня есть несколько таблиц MySQL с именами вида "Shard_0", "Shard_1", "Shard_2" ... "Shard_n" Все они имеют одинаковую структуру таблицы. Все они живут в одной базе данных.

Скажем, я хочу добавить столбец ко всем этим таблицам. Есть ли способ сделать это программно?

Что-то вроде:

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

Можно ли сделать что-то подобное? Если да, то какой язык и / или библиотека мне нужны?

Спасибо

Ответы [ 3 ]

4 голосов
/ 27 октября 2010

Нет проблем. Python имеет несколько сторонних библиотек для подключения к БД. Но самый простой подход, если вам придется сделать это только один раз, это сценарий python, который записывает инструкции SQL просто в стандартный вывод:

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

Тогда просто позвоните из CLI так:

./sqlgenscript.py | mysql -u username -p
1 голос
/ 27 октября 2010

Да, это возможно, вы можете использовать модуль MySqlDb для Python и писать запросы, аналогичные SQL-запросам, и выполнять их для обновления таблиц. Посмотрите на это: http://mysql -python.sourceforge.net / MySQLdb.html

0 голосов
/ 27 октября 2010

Я думаю, вы можете создать подпрограмму, которая принимает один аргумент, и отправить «i» в качестве аргумента вашей подпрограмме.Тогда вы можете назвать свою рутину.

Звоните test. My_Alter (i);

, где i = 1,2,3, ...

...