1
我測試在Windows 10,我的代碼,我有需要調用一個遠程SQL Server數據庫存儲過程的Django應用程序。這裏的數據庫從settings.py片段:Django的pyodbc和調用存儲過程
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db1',
'HOST': 'mycompany.com',
'PORT': '3306',
'USER': 'user',
'PASSWORD': 'pw',
},
'ss': {
'ENGINE': 'django_pyodbc',
'NAME': 'db2',
'HOST': 'myserver\SQLEXPRESS',
'USER': 'myuser',
'PASSWORD': 'mypw',
'PORT': '1433',
# 'DRIVER': 'SQL Server',
'OPTIONS': {
'driver_supports_utf8': True,
'host_is_server': True, # must be True for remote db
'autocommit': True,
'unicode_results': True,
'extra_params': 'tds_version=8.0',
},
},
}
下面是從我的觀點的代碼片段:
cursor = connections['ss'].cursor()
cursor.execute("{call dbo.mysproc(?)}", (id))
當我執行cursor.execute聲明我得到這個錯誤:
django.db.utils.DatabaseError: ('The SQL contains 1 parameter markers, but 36 parameters were supplied', 'HY000')
我的參數,ID是一個GUID。 想法?通過試驗和錯誤
cursor.execute("{call dbo.mysproc(?)}", [id])
我發現這一點: