2017-06-03 1 views
-1

meine Anforderungen folgt. Suchen Sie nach einer Anzahl (*) für eine Tabelle, und falls noch nicht vorhanden, erstellen Sie eine. Nachstehend finden Sie den Beispielcode zum Anzeigen des Problems. In beiden Fällen kommt die else Bedingung. nicht sicher, wie ich das erreiche, jede Hilfe wird geschätzt.Python Oracle, wenn sonst Probleme für Zeilen holen

import cx_Oracle 
import os 
import datetime 

ts = datetime.datetime.now() 
con = cx_Oracle.connect('xxxx/[email protected]:1521/xxxxx') 
print con.version 
cur = con.cursor() 
cur.execute('select count(*) from AAA.AAA_TEST') 
rows = cur.fetchall(); 
print rows 
print len(rows) 
if (rows ==1): 
    print 'there is a row' 
else: 
    print 'there is no row' 


#result 1 where the row exists 
11.2.0.4.0 
[(1,)] 
1 
there is no row 

Process finished with exit code 0 

#result 2 where the row do not exists 
11.2.0.4.0 
[(0,)] 
1 
there is no row 

Process finished with exit code 0 

Antwort

0

SELECT COUNT(*) gibt immer eine Zeile - entweder mit 0, wenn es kein Objekt in der Tabelle oder mit der Anzahl der Objekte. Es gibt also immer eine Zeile und Sie sollten die Anzahl testen, nicht die Anzahl der Zeilen. So verwenden Sie if (rows[0][0] >= 1):

rows[0] gibt die erste Zeile zurück, rows[0][0] gibt die erste Spalte der ersten Zeile; für Ihre SELECT COUNT(*) die erste Spalte ist die Anzahl, so dass Sie testen, ob die Zählung 0 ist, wenn es> = 1 ist.

+0

Sorry, dass nicht hilft, wenn Sie in den Code sehen, habe ich bereits verwendet, und in beiden Fällen ist es showed 1. – Shanker

+0

Hilft der geänderte Code? – phd

+0

Entschuldigung, warte bitte eine Minute, ich werde dich aktualisieren. es scheint so zu funktionieren. Lass mich ein paar Tests machen. Danke im Voraus. – Shanker