Я разработки веб-приложений наряду с приложением существующих окон на сервере SQL 2014.Using следующие параметрыДжанго Формы pyodbc MSSQL TypeError: не все аргументы преобразуются во строки форматирования
DATABASES = {
'default': {
'NAME': ' Name',
'ENGINE': 'sql_server.pyodbc',
'SERVER': 'server',
'USER': 'sa',
'PASSWORD': 'password',
'OPTIONS':
{
'driver_supports_utf8': True,
'autocommit': True,
'unicode_results': True,
'host_is_server':True,
'driver': 'SQL Server Native Client 11.0',
}
}
}
Я Использование хранимых процедур в моем Джанго приложение, чтобы использовать существующие функциональные возможности
class Viewpatform(forms.Form):
Name = forms.CharField(max_length=100)
Phone_Number = forms.IntegerField(label='Phone Number', required=True)
Sex = forms.ChoiceField(widget=forms.Select(choices=sexchoice))
Age = forms.IntegerField(label='Age')
AgeType = forms.ChoiceField(choices=Agetype, required=True, label='Type')
Address = forms.CharField(max_length=500, required=False)
Registration_Date = forms.DateField(label='Registration Date')
with connection.cursor() as cursor:
cursor.execute(''' EXEC dbo.insert_patients @Name = ?, -- varchar(100)
@Phone_Number = ?, -- int
@Age = ?, -- int
@AgeType = ?, -- int
@Address = ?, -- varchar(200)
@sex = ? -- varchar(2)
''', [ Name, Phone_Number, Sex, Age, AgeType, Address])
Я получаю следующие ошибки при выполнении формы
File "c:\python35\lib\site-packages\django\db\backends\utils.py", line 79, in execute return super(CursorDebugWrapper, self).execute(sql, params) File "c:\python35\lib\site-packages\django\db\backends\utils.py", line 64, in execute return self.cursor.execute(sql, params) File "c:\python35\lib\site-packages\sql_server\pyodbc\base.py", line 535, in execute sql = self.format_sql(sql, params) File "c:\python35\lib\site-packages\sql_server\pyodbc\base.py", line 503, in format_sql sql = sql % tuple('?' * len(params)) TypeError: not all arguments converted during string formatting
Django версии 1.10 для Windows 7 64 бит Django-Pyodbc-лазурь: Версия: 1.10.4.0 Python 3.5
Почему вы написали хранимые процедуры для простых вставок, подобных этому, в первую очередь? Все, что вы достигаете, это сделать вещи довольно сложными. Обычно вы не используете курсоры в django, потому что у нас фантастический ORM. Эта вставка на основе курсора - это один лайнер с использованием Django ORM – e4c5
@ e4c5. Я использую все существующие хранимые процедуры, я не хотел реорганизовывать свои модели в соответствии с новым приложением, и существующее веб-приложение находится в производстве с улучшениями, идущими я тоже смог бы их покрыть, используя SPs –
. Какова точка написания хранимой процедуры для простой вставки? Код для вызова хранимой процедуры более сложный, чем один вкладыш для вставки с помощью ORM. Извините, вы ошиблись. – e4c5