4

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 = ''")

ID を更新する 2 番目のコードがあります。

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

問題は、以前に Python で取得した ID を表示すると、次のいずれかが取得されることです。

row = cursor.fetchall()
f row:
    print row

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

また

if row:
    print row[3]

(1020, )

次のスクリプトの 2 番目の部分を実行できるように、番号だけが必要です。

WHERE ID = '1051'"

部。私は試しました:

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

そしてそれは私に与えました:

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

そして私は試しました:

str(row[1]).lstrip('(),')

そして私は得ました:

'1017, )'

ID を再利用できるように、ID から文字を削除するにはどうすればよいですか?

ありがとう、

エイドリアン

4

2 に答える 2

8

初めに:

rows = [x[0] for x in cursor.fetchall()]

次に、ひどい while ループを破棄します。

for row in rows:
  print 'SELECT ID FROM One.dbo.Two WHERE ID = %s' % row
于 2010-09-01T00:56:51.883 に答える
2

リスト内からタプルにアクセスしているため、リスト内の場所とタプル内の場所を指定する必要があることが問題だと思います。

row = cursor.fetchall()
f row:
    print row
    print row[3]
    print row[3][0]

出力:

[(1016, ), (1017, ), (1019, ), (1020, ), (1021, )]
(1020, )
1020
于 2011-10-27T17:42:25.847 に答える