Если кто-то пытается обновить данные из одной базы данных в другую, независимо от того, на какую таблицу они нацелены, для этого должны быть некоторые критерии.
Этот код лучше и чист для всех уровней: [ ! d2]
update dbname1.content targetTable left join dbname2.someothertable sourceTable at targetTable.compare_field = sourceTable.compare_field set targetTable.col1 = sourceTable.cola, targetTable.col2 = sourceTable.colb, targetTable.col3 = sourceTable .colc, targetTable.col4 = sourceTable.cold
Traaa! Он отлично работает!
С учетом вышеизложенного вы можете изменить заданные поля и критерии «on», чтобы выполнить свою работу. Вы также можете выполнить проверки, затем потянуть данные в таблицу temp, а затем запустить обновление, используя приведенный выше синтаксис, заменив имена таблиц и столбцов.
Надеюсь, что это сработает, если не сообщите мне. Я напишу вам точный запрос.
В этом цикле:
for i in x:
f[i] = x[i] + 1
i
принимает значения 1, 2, а затем 3. x[i]
не так, как вы думаете. i
уже содержит содержимое ячейки массива x
. Поскольку индексы массива начинаются с 0, вы делаете IndexError
при попытке получить элемент индекса 3 (который будет 4-м элементом).
Возможно, вы хотели что-то вроде:
for i in range(len(x)):
f[i] = x[i] + 1
Это также можно было бы записать:
for i, v in enumerate(x):
f[i] = v + 1
Когда вы выполняете for i in some_list
, i
ссылается на элементы этого списка, а не на их индексы. Например:
In [1]: for i in [3, 2, 1]:
...: print i
...:
3
2
1
Однако вы используете i
в качестве индекса.
Вы выполняете итерацию с i
по x
, и, таким образом, i
принимает значения из 1
, 2
и 3
. Но 3
является слишком большим индексом для массива длины 3. Последний индекс 2
, так как в индексах Python начинаются с 0.
0
, цикл for
начинается с i=1
? В этом случае добавление дополнительного элемента в f
должно исправить мою проблему, но это не похоже на особенно элегантное решение?
– user3008862
19 November 2013 в 15:21
i=1
, потому что 1
является 0-м элементом массива. Я немного расширил ответ, чтобы сделать его более ясным.
– Lev Levitsky
19 November 2013 в 15:37