Python checking for None/Null values
Okay, I have been handed a python project and working through it I have had to add a report. I am returning 10 variables the results of an SQL Query and as usual the number of results vary from 1 result to 10 results so I implemented a check to see if the array item was empty or not. The code is below based upon the code already in the python project i was handed. history8=historyRep[8] if history8!=None: history8=cmi.format_history(historyRep[8]) else: history8='' and if historyRep[8]!=None: history8=cmi.format_history(historyRep[8]) else: history8='' but regardless i am getting the error below and i can't seen to resolve this, what am i doing wrong? Traceback (most recent call last): File "/home/phillipsd/work/medusa-new/htdocs/pricingrep.cgi", line 326, in ? if historyRep[8]==None: IndexError: list index out of range David P -- http://mail.python.org/mailman/listinfo/python-list
Re: Python checking for None/Null values
> `historyRep` seems to be shorter than you think it is. Try printing it > too see what it actually contains. > > Ciao, > Marc 'BlackJack' Rintsch HistoryRep is an array value so historyRep[0] to [7] all have values in them but historyRep[8] and [9] do not as the query does not always return a full 10 values. I am trying to check all of the historyRep items to check if they are empty/null/None (whatever the term is in python) and make it return an empty value or a none to the screen. I did print historyRep[8] out and it falls over, I am assuming if its an array and if the SQL query only returns 8 records instead of 10 then the last two array values i am checking for litterly don't exist instead of being null but i can't find a if exists style function either? David P -- http://mail.python.org/mailman/listinfo/python-list
Re: Python checking for None/Null values
> Check with "if history8 is not None". Won't help your problem, but it > is a bit more pythonic code ;-) > > Sybren Actually i tried that as well when i was fooling around, atm i am less concenred with pythonic code and making it work in the first place. The entire program to be fair is a bit messy but i do agree on the basis that the easier the code is to read the easier it is to work with. David P -- http://mail.python.org/mailman/listinfo/python-list
Re: Python checking for None/Null values
> Note: sometimes having a clean and readable program is better than > having a running program that you can't read, because you can fix the > the first one, and it can teach you something. > > Bye, > bearophile Thanks for your help and suggestions i'll give them a shot. Unfortunatly when working with 6 years of other peoples legacy code (esspecially *this* code) it sometimes looks like it was specifiyed in the project spec *not* to be readable :) But I will endevour to change that while working with it myself ;) David P -- http://mail.python.org/mailman/listinfo/python-list
Re: Python checking for None/Null values
> [EMAIL PROTECTED] wrote: > A way to solve your problem is to see how many elements the list > contains with > len(sequence) cheers after your post went of to try it and it worked first time thanks for being helpful and plesant :) Fuzzy -- http://mail.python.org/mailman/listinfo/python-list
round not rounding to 0 places
I have been using a round command in a few places to round
a value to zero decimal places using the following format,
round('+value+', 0)
but this consistantly returns the rounded result of the value
to one decimal place with a zero
EG:
4.97 is returned as 5.0 when i want it returned as 5, does
anyone know why this is and if i can get the round to make
the value 5?
David P
--
http://mail.python.org/mailman/listinfo/python-list
Re: round not rounding to 0 places
> Sybren Stuvel wrote:
> round returns a float. Use
> int(round('+value+', 0))
> to get an integer.
> Sybren
ahh of course it does, slaps own forehead sorted
thanks :)
David P
--
http://mail.python.org/mailman/listinfo/python-list
Nested Looping SQL Querys
I am back developing futher our Python/CGI based web application run by
a Postgres DB
and as per usual I am having some issues. It Involves a lot of Legacy
code. All the actual
SQL Querys are stored in the .py files and run in the .cgi files. I
have the problem that I
need to construct a row from two seprate SQL Querys, I have tried
combining the two
Querys but all that does is create a Query that returns nothing after a
long period running.
the first query results are delimited with [] and the second with {} I
want my result to
return [ val1 ] [ val2 ] [ val3 ] [ val4 ] { valA } { valB }
unfortunatly when i put my second
query in anywhere on the page its crashes and returns a Internal Server
Error.
the functions from the cmi file are below.
def creationSQL(pubID, productCode, description, suppNo1, all):
validQuery=0
if all:
all=int(all[0])
all = cromwell.toString(all)
sql='SELECT S.product_code, S.description, S.suppno1,
P.discount_factor, S.status, S.list_price, S.offer_price, P.page_no,
int8(P.oid), S.stock_qty '
sql=sql+'FROM (medusa.cmi_stockrec AS S INNER JOIN
medusa.cmi_auxstockrec AS A ON S.product_code=A.product_code) LEFT JOIN
medusa.cmi_pricing AS P ON S.product_code=P.product_code AND
P.pub_id='+pubID+' '
sql=sql+'WHERE '
if productCode!='':
sql=sql+cromwell.orSQL('S.product_code', productCode, 'ILIKE
\'',
'%\'', 1)+' AND '
print 'Product Code:
'+productCode+''
validQuery=1
if description!='':
sql=sql+' (upper(S.description) LIKE
upper(\'%'+description+'%\'))
AND '
print 'Description:
'+description+''
validQuery=1
if suppNo1!='':
sql=sql+' (upper(S.suppno1) LIKE upper(\'%'+suppNo1+'%\')) AND '
print 'Part No: '+suppNo1+''
validQuery=1
if all!=pubID:
sql=sql+' (P.product_code IS NULL) AND '
sql=sql[:-4]
sql=sql+' ORDER BY S.product_code'
print ''
if validQuery==1:
return sql
else:
return ''
def creationPubSQL(pubID, productCode, description, suppNo1, all,
pubList, pubPageNo):
validQuery=0
if all:
all=int(all[0])
all = cromwell.toString(all)
sql='SELECT Pl.product_code, S.description, S.suppno1,
P.discount_factor, S.status, Pl.list_price, Pl.offer_price, P.page_no,
int8(P.oid), Pl.page_no, S.stock_qty '
sql=sql+'FROM ((medusa.cmi_pricing AS Pl INNER JOIN
medusa.cmi_stockrec AS S ON S.product_code=Pl.product_code) INNER JOIN
medusa.cmi_auxstockrec AS A ON S.product_code=A.product_code) LEFT JOIN
medusa.cmi_pricing AS P ON S.product_code=P.product_code AND
P.pub_id='+pubID+' '
sql=sql+'WHERE Pl.pub_id='+pubList+' AND '
if productCode!='':
sql=sql+cromwell.orSQL('Pl.product_code', productCode, 'ILIKE
\'',
'%\'', 1)+' AND '
print 'Product Code:
'+productCode+''
validQuery=1
if description!='':
sql=sql+' (upper(S.description) LIKE
upper(\'%'+description+'%\'))
AND '
print 'Description:
'+description+''
validQuery=1
if suppNo1!='':
sql=sql+' (upper(S.suppno1) LIKE upper(\'%'+suppNo1+'%\')) AND '
print 'Part No: '+suppNo1+''
validQuery=1
if pubPageNo!='':
sql=sql+cromwell.orSQL('Pl.page_no', pubPageNo, '=\'', '\'',
1)+' AND
'
print 'Publication Page No:
'+pubPageNo+''
validQuery=1
if all!=pubID:
sql=sql+' (P.product_code IS NULL) AND '
sql=sql[:-4]
sql=sql+' ORDER BY Pl.product_code'
print ''
if validQuery==1:
return sql
else:
return ''
def stockdetailsSQL(productCode):
validQuery=0
sql="SELECT (stkphys - stkalloc) as free_stock, stk_qty_wk, stkalloc,
stkordq, r.fd_deliverydue "
sql=sql+'FROM charisma.sk_stklfl LEFT JOIN
progress.report_firstdelivery as r ON stkl_stockno = r.fd_sordstk '
sql=sql+'WHERE stkl_stockno = \''+productCode+'\' AND stkl_location =
\'081\' ORDER BY stkl_stockno'
validQuery=1
sql=sql[:-4]
print ''
if validQuery==1:
return sql
else:
return ''
The page code for the CGI file that genereates the tables
#!/usr/bin/python
# Creation Screen
# MeDuSa - Marketing Data System
# $Id: creation.cgi 54 2006-02-16 11:32:12Z
[EMAIL PROTECTED] $
print 'Content-Type: text/html\n\n'
import sys
sys.stderr = sys.stdout
from pyPgSQL import libpq
import cgi
import string
import os
import cmi
import cromwell
import hermes
conn = hermes.db()
# This will allow us to retrieve submitted form fields.
cgiForm=cgi.FieldStorage()
# Start as
Calling a Postgres Function using CGI written in Python
I need to call a function stored in Postgres which does a lot of the db and calculation work all the SQL queries are hardcoded in a file called cmi.py. What i need to do is too to call my function from postgres passing in my product_code variable into it and returning the value from the query into a variable i can print to screen as part of a HTML page. I am sure its very easy but have never done anything in python as have none of the guys i work with making this a bit of a problem. Cheers Guys David -- http://mail.python.org/mailman/listinfo/python-list
Re: Calling a Postgres Function using CGI written in Python
I did do a google search i have looking through the one python book i have and there are plenty of references for how to write a function in Python but not as many on how to call a function stored in postgres using python I have tried the conn.execute(cmi_grn_cost(productCode)) and also the conn.callproc(cmi_grn_cost(productCode)) commands where conn is the connection object and cmi_grn_cost() is the the function getting called from Postgres and productCode is the variable to passed. -- http://mail.python.org/mailman/listinfo/python-list
Re: Calling a Postgres Function using CGI written in Python
cheers :) thats what i wanted to know :) David -- http://mail.python.org/mailman/listinfo/python-list
