Ошибка обновления MySQLdb Python

См. статью в Википедии по этой теме. Пример Алгоритм Manacher's Реализация Java для линейного решения O (n) из следующей статьи:

import java.util.Arrays; public class ManachersAlgorithm {public static String findLongestPalindrome (String s) {if (s == null || s.length () == 0) return "";

char[] s2 = addBoundaries(s.toCharArray());
int[] p = new int[s2.length]; 
int c = 0, r = 0; // Here the first element in s2 has been processed.
int m = 0, n = 0; // The walking indices to compare if two elements are the same
for (int i = 1; ir) {
    p[i] = 0; m = i-1; n = i+1;
  } else {
    int i2 = c*2-i;
    if (p[i2]<(r-i)) {
      p[i] = p[i2];
      m = -1; // This signals bypassing the while loop below. 
    } else {
      p[i] = r-i;
      n = r+1; m = i*2-n;
    }
  }
  while (m>=0 && nr) {
    c = i; r = i+p[i];
  }
}
int len = 0; c = 0;
for (int i = 1; i
blockquote>

13
задан sqram 18 October 2013 в 15:59
поделиться

2 ответа

Обновление 2019

Начиная с PHP 7.3 , есть новая встроенная функция под названием array_key_first () , которая будет извлекать первый ключ из данный массив без сброса внутреннего указателя. Дополнительную информацию см. В документации .


Вы можете использовать reset и ключ :

reset($array);
$first_key = key($array);

По сути, это то же самое, что и ваш исходный код, но с немного меньше накладных расходов, и то, что происходит, станет более очевидным.

Просто не забудьте вызвать reset , или вы можете получить любой из ключей в массиве. Вы также можете использовать end вместо reset , чтобы получить последний ключ.

Если вы хотите, чтобы ключ получил первое значение, reset фактически вернет его. :

16
ответ дан 1 December 2019 в 19:31
поделиться

Я считаю, что @Jason Creighton и @ S.Lott правы.

По крайней мере, если таблица, которую вы обновляете, находится в транзакционном механизме хранения. InnoDB является транзакционным, ISAM - нет.

Вы должны либо вызвать commit () на своем объекте подключения перед его закрытием, либо вы должны установить подключение к режиму автофиксации. Я не уверен, как это сделать для соединения MySQLdb, я полагаю, вы либо устанавливаете аргумент конструктору соединения, либо устанавливаете свойство после создания объекта соединения.

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

conn = mysql.connection(host, port, autocommit=True)

# or
conn = mysql.connection(host, port)
conn.autocommit(True)
19
ответ дан 1 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: