Из этот ответ : Когда вы используете оператор импорта, он всегда ищет фактический путь к модулю (и / или sys.modules); он не использует объекты модуля в локальном пространстве имен, которые существуют из-за предыдущего импорта.
Поэтому, если вы хотите использовать какой-либо объект из urllib, вам нужно ввести фактические объекты, которые вы хотите использовать:
import urllib.request
Вы также можете сделать что:
from urllib import request
fhand = request.urlopen('http://data.pr4e.org/romeo.txt')
Вы получите водосливную ошибку, когда максимальное значение будет достигнуто. Если Вы используете тип данных bigint с максимальным значением 9,223,372,036,854,775,807
это никогда не будет, скорее всего, иметь место.
Сообщение об ошибке, которое Вы получите, будет похож на это:
Msg 220, Level 16, State 2, Line 10
Arithmetic overflow error for data type tinyint, value = 256.
Насколько я знаю MS, SQL не обеспечивает функциональности для заполнения разрывов идентификационных данных, таким образом, необходимо будет или сделать это собой или изменить тип данных столбца идентификационных данных.
В дополнение к этому можно установить значение запуска к самому маленькому отрицательному числу, чтобы заставить еще больший диапазон значений использовать.
Это не заполнит разрывы. Вместо этого вставки перестанут работать, пока Вы не измените определение столбца, чтобы или отбросить идентификационные данные и найти некоторый другой способ заполнить разрывы или увеличиться, размер (пойдите от интервала до bigint), или измените тип данных (от интервала до десятичного числа) так, чтобы больше значений идентификационных данных было доступно.
Вы будете не мочь вставить новые строки и получите сообщение об ошибке, упомянутое выше, пока Вы не решите проблему. Можно сделать это много путей. Если Вы все еще имеете данные и используете весь идентификатор ниже макс., необходимо будет изменить тип данных. Если данные становятся очищенными регулярно, и у Вас есть большой разрыв, который не будет используемым, можно пересеять личный номер к самому низкому количеству в том разрыве. Например, в предыдущем задании, мы регистрировали транзакции. У нас было, возможно, 40-50 миллионов в месяц, но мы производили чистку всего более старого, чем 6 месяцев, таким образом, каждые несколько лет, идентификационные данные будут рядом с 2 миллиардами, но у нас ничего не было бы с идентификатором ниже 1,5 миллиардов, таким образом, мы пересеем назад к 0. Снова возможно, что ни один из них не будет работать на Вас, и необходимо будет найти другое решение.
Если столбцом идентификационных данных является Целое число, то Ваше макс. 2,147,483,647. Вы получите водосливную ошибку при превышении ее.
Если Вы думаете, что это - риск, просто используйте Тип данных bigint, который дает Вам до 9,223,372,036,854,775,807. Не может вообразить таблицу базы данных с который много строк.
Дальнейшее обсуждение здесь. (Та же ссылка как xsl упомянутый).
Если Вы действительно поражаете максимальное количество для Вас столбец идентификационных данных, можно переместить данные из той таблицы во вторичную таблицу с большим типом столбца идентификационных данных и указать начальное значение для того нового значения идентификационных данных, чтобы быть максимумом предыдущего типа. Новые значения идентификационных данных продолжатся от той точки.
Если вы время от времени удаляете «старые значения», вам просто нужно сбросить начальное число, используя DBCC CHECKIDENT ('MyTable', RESEED, 0);