FreeTDS + unixODBC или Установка iODBC
первый FreeTDS, затем настройте один из двух механизмов ODBC для использования FreeTDS в качестве его драйвера ODBC. Тогда используйте интерфейс командной строки механизма ODBC.
unixODBC имеет isql, iODBC имеет iodbctest
, можно также использовать любимый язык программирования (я успешно использовал Perl, C, Python и Ruby для соединения с MSSQL)
, я лично использую FreeTDS + iODBC:
$more /etc/freetds/freetds.conf
[10.0.1.251]
host = 10.0.1.251
port = 1433
tds version = 8.0
$ more /etc/odbc.ini
[ACCT]
Driver = /usr/local/freetds/lib/libtdsodbc.so
Description = ODBC to SQLServer via FreeTDS
Trace = No
Servername = 10.0.1.251
Database = accounts_ver8
Это исключение означает, что вы пытаетесь распаковать кортеж, но в кортеже слишком много значений по отношению к количеству целевых переменных. Например: эта работа и печатает 1, затем 2, затем 3
def returnATupleWithThreeValues():
return (1,2,3)
a,b,c = returnATupleWithThreeValues()
print a
print b
print c
Но это вызывает вашу ошибку
def returnATupleWithThreeValues():
return (1,2,3)
a,b = returnATupleWithThreeValues()
print a
print b
вызывает
Traceback (most recent call last):
File "c.py", line 3, in ?
a,b = returnATupleWithThreeValues()
ValueError: too many values to unpack
Теперь, почему это происходит в вашем случае, я не знаю, но, возможно, это ответ укажет вам верное направление.
Это происходит со мной, когда я использую Jinja2 для шаблонов. Проблему можно решить, запустив сервер разработки с помощью команды runserver_plus
из django_extensions .
Он использует отладчик werkzeug , который также оказывается намного лучше и имеет очень красивую интерактивную консоль отладки. Он творит некоторую магию ajax для запуска оболочки python в любом кадре (в стеке вызовов), чтобы вы могли отлаживать.
Скорее всего, где-то в вызове get_profile () есть ошибка. На ваш взгляд, прежде чем вы вернете объект запроса, поместите эту строку:
request.user.get_profile()
Это должно вызвать ошибку и дать вам более подробную трассировку, которую вы затем можете использовать для дальнейшей отладки.
Эта проблема выглядела знакомой, поэтому я подумал, что посмотрю, смогу ли я воспроизвести ограниченный объем информации.
Быстрый поиск обнаружил запись в блоге Джеймса Беннета здесь , в котором упоминается, что при работе с UserProfile для расширения модели User обычная ошибка в settings.py может привести к тому, что Django выдаст эту ошибку.
Процитируем запись в блоге:
Значение параметра - не «appname.models.modelname», а просто «appname.modelname». Причина в том, что Django не использует это для прямого импорта; вместо этого он использует внутреннюю функцию загрузки модели, которой требуется только имя приложения и имя модели. Попытка сделать что-то вроде "appname.models.modelname" или "projectname.appname.models.modelname"
попробуйте распаковать в одной переменной,
python обработает его как список,
затем распакует из списка
def returnATupleWithThreeValues():
return (1,2,3)
a = returnATupleWithThreeValues() # a is a list (1,2,3)
print a[0] # list[0] = 1
print a[1] # list[1] = 2
print a[2] # list[2] = 3