Frage

Ich habe mehr MySQL-Tabellen mit Namen der Form "Shard_0", "Shard_1", "Shard_2" ... "Shard_n" Alle von ihnen identische Tabellenstruktur haben. Sie leben alle in derselben Datenbank.

Say Ich möchte eine Spalte alle diese Tabellen hinzuzufügen. Gibt es eine Möglichkeit, die programmatisch zu tun?

So etwas wie:

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

Ist es möglich, so etwas zu tun? Wenn ja, was Sprache und / oder Bibliothek benötige ich?

Danke

War es hilfreich?

Lösung

Kein Problem. Python hat mehrere Bibliotheken von Drittanbietern zu einem DB zu verbinden. Aber der einfachste Ansatz, wenn Sie dies nur für eine Zeit zu tun haben, wäre ein Python-Skript, die die SQL-Anweisungen nur auf die Standardausgabe schreibt:

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

Dann rufen Sie einfach es von CLI wie folgt aus:

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

Andere Tipps

Ja, es ist möglich, können Sie MySQLdb Modul für Python verwenden und die Abfragen ähnlich wie SQL-Abfragen schreiben und führen sie die Tabellen zu aktualisieren. Werfen Sie einen Blick auf diese: http://mysql-python.sourceforge.net/MySQLdb.html

Ich denke, Sie eine Routine zu schaffen, die ein Argument, und sendet „i“ als Argument für Ihre Routine. Dann können Sie Ihre Routine aufrufen.

Anruf test.My_Alter (i);

i = 1,2,3, ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top