right now I have min, max value from table1 that defines the range of a value. There is a boolean column in table2 of which the value is determined by the min and max value in table1. If the actual number is within the range, the value would be F (means no problem), and vice versa. after i ran my codes, only the first two rows of the column came out as false. I don’t know what’s wrong with my codes. My codes of for loop block are as below. Of which, records1 is the actual values in table2, and records2 and records3 are minimum and maximum values from table1 respectively. I use this forloop statement to get single record of the three groups of numbers, and then in the if statement within it, I determine each value of the boolean column by checking if record1 falls in the range between min(record2) and max(record3) values.
conn = psycopg2.connect(conn_string)
# conn.cursor will return a cursor object, you can use this cursor to perform queries
#get the actual number
curs1 = conn.cursor()
statement='SELECT value FROM table2'
curs1.execute(statement)
records1=curs1.fetchall()
#get the minimum number
curs2 = conn.cursor()
statement2='SELECT min FROM table1'
curs2.execute(statement2)
records2=curs2.fetchall()
#get the maximum number
curs3 = conn.cursor()
statement3='SELECT max FROM table1'
curs3.execute(statement3)
records3=curs3.fetchall()
for record1 in records1:
for record2 in records2:
for record3 in records3:
while record1 >= record2 and record1 <=record3::
statement4='UPDATE table2 SET column = false WHERE record1 >= record2 and record1 <= record3'
curs4 = conn.cursor()
curs4.execute(statement4)
else:
statement5='UPDATE table2 SET column = true WHERE record1 <= record2 or record1 >= record3'
curs5 = conn.cursor()
curs5.execute(statement5)
conn.commit()
conn.close()
Can someone point out where I am wrong? Tks in advance
I solved it by using the statement below:
…
instead of using variable in the forloop, i used the select statement, within which I used a WHERE clause to define according record of min and max. This seems a better way to do it.