Когда вы обращаетесь к столбцу DataFrame, вы берете одномерный вектор размера #rows. Если вы хотите иметь второе измерение 1 для каждого элемента, например, вместо [1, 2, 3, 4]
вы хотите [[1], [2], [3], [4]]
, приведите его к NumPy ndarray с атрибутом .values
, а затем измените его на размер (-1, 1)
.
df = pd.DataFrame([1,2,3,4], columns=['C'])
col_c_1 = df['C'].values # Shape (4,)
col_c_2 = col_c_1.reshape(-1, 1) # Shape (4, 1)
С -1
вы говорите, чтобы заполнить первый размер измерения автоматически.
Какое бы соединение пул, который вы используете, вам нужно предположить, что соединение может быть случайным образом закрыто в любой момент, и заставить ваше приложение справиться с этим.
В случае длительного соединения с БД в «доверенной» сети часто происходит следующее: что ОС применяет ограничение по времени на то, как долго соединения могут быть открыты, или периодически запускает некоторый код «очистки соединения». Но причина не имеет большого значения - это просто часть сетевой жизни, и вы должны предполагать, что соединение может быть «вырвано у вас из-под ног», и разобраться с этим сценарием соответствующим образом.
Итак, учитывая это, я действительно могу '
Вы пробовали Apache DBCP ? Я не знаю о c3po, но DBCP может обрабатывать незанятые соединения по-разному:
Он может также проверьте, действительно ли соединение, непосредственно перед тем, как передать его приложению, выполнив запрос; если он получает исключение, он отбрасывает это соединение и пытается установить другое (или создает новое, если может). Намного надежнее.
Эта ошибка выскакивала и с mysql & c3p0 - я пробовал разные вещи и в конце концов избавился от нее. Не могу вспомнить, но что могло решить, это флаг autoReconnect а-ля
url="jdbc:mysql://localhost:3306/database?autoReconnect=true"
Возможно, вы захотите взглянуть на некоторые результаты тестов на http://jolbox.com - сайте, на котором размещен BoneCP, пул соединений, который быстрее, чем оба C3P0 и DBCP.
Обрыв канала
Это примерно означает, что другая сторона прервала / тайм-аут / закрыла соединение. Разве вы не поддерживаете связи так долго? Убедитесь, что ваш код правильно закрывает все ресурсы JDBC ( Соединение
, Заявление
и ResultSet
) в блоке finally.
Увеличение тайм-аута соединения mysql увеличивало время ожидания. частота этих ошибок.
Позаботьтесь о том, чтобы этот тайм-аут не превышал собственный тайм-аут базы данных.