2014-06-30 44 views
0

Python腳本變量我試圖以包括Python腳本,調用MS SQL Server的包括在調用的MS SQL Server

import pyodbc 

ip_addr = '10.10.10.10' 

querystring = """SELECT USER_NAME 
FROM sem6.sem_computer, [sem6].[V_SEM_COMPUTER], sem6.IDENTITY_MAP, sem6.SEM_CLIENT 
WHERE [sem6].[V_SEM_COMPUTER].COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID 
AND sem6.SEM_CLIENT.GROUP_ID = IDENTITY_MAP.ID 
AND sem6.SEM_CLIENT.COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID 
AND [IP_ADDR1_TEXT] = %s 
""" 

params = (ip_addr) 

con = pyodbc.connect('DRIVER={SQL Server};SERVER=10.10.10.100;DATABASE=database;UID=username;PWD=password') 
cur = con.cursor() 
cur.execute(querystring, params) 
result = cur.fetchone()[0] 
print result 
con.commit() 
con.close() 

變量,它提供了以下錯誤

Traceback (most recent call last): 
    File "database_test.py", line 17, in <module> 
    cur.execute(querystring, params) 
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameter 
s were supplied', 'HY000') 
+1

在你當前的代碼中,'p​​arams'不是一個元組,它是一個等於'ip_addr'的字符串。爲了創建一個元素的元組,你需要一個尾隨的逗號,如'params =(ip_addr,)'。 – murgatroid99

+0

@ murgatroid99我試過了,並且收到相同的錯誤 – Glowie

+0

我沒想到這是你問題的原因。這只是我注意到的一個錯誤。這就是爲什麼它是一個評論。 – murgatroid99

回答

1

使用?而不是原始查詢中的%s。