2017-05-11 95 views
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]) 

私はこれを見つけた:

答えて

2

は、ここで修正だ、単に括弧を二乗するパラメータを囲む括弧を変更しました。

関連する問題