如何从Python,PyODBC,SQL返回中删除"()"?

Adr*_*non 4 python sql-server pyodbc

我抓住了一堆我需要用Python和PyODBC更新的SQL ID:

import pyodbc
cnxn = pyodbc.connect('DSN=YesOne;PWD=xxx')
cursor = cnxn.cursor()
cursor.execute("SELECT ID FROM One.dbo.Two WHERE STATUS = 'OnGoing' AND ID = ''")
Run Code Online (Sandbox Code Playgroud)

我有第二段代码更新ID:

cursor.execute("Update One.dbo.Two SET STATUS = 'Completed', Modified = 'Today' WHERE ID = '1051'")
Run Code Online (Sandbox Code Playgroud)

问题是当我查看之前在Python中获取的ID时,我得到:

row = cursor.fetchall()
f row:
    print row
Run Code Online (Sandbox Code Playgroud)

[(1016,),(1017,),(1019,),(1020,),(1021,),(1025,),(1026,),(1027,),(1029,),(1048,) ,(1049,)]

要么

if row:
    print row[3]
Run Code Online (Sandbox Code Playgroud)

(1020,)

我只需要数字,所以我可以运行我的第二部分脚本:

WHERE ID = '1051'"
Run Code Online (Sandbox Code Playgroud)

部分.我尝试过:

count = len(row)
while count > 0:
    newrow = row[count-1]
    print 'SELECT ID FROM One.dbo.Two WHERE ID = ' + str(newrow)
    count = count-1
Run Code Online (Sandbox Code Playgroud)

它给了我:

SELECT ID FROM One.dbo.Two WHERE ID =(1049,)
SELECT ID FROM One.dbo.Two WHERE ID =(1048,)
etc ...

我试过了:

str(row[1]).lstrip('(),')
Run Code Online (Sandbox Code Playgroud)

我得到了:

'1017,)'

如何从ID中删除字符以便重用ID?

谢谢,

阿德里安

Vad*_*der 8

首先:

rows = [x[0] for x in cursor.fetchall()]
Run Code Online (Sandbox Code Playgroud)

然后放弃你可怕的while循环:

for row in rows:
  print 'SELECT ID FROM One.dbo.Two WHERE ID = %s' % row
Run Code Online (Sandbox Code Playgroud)