Question about 'if __name__ == "__main__":'

A

Amy G

I have a program that needs a little help.
Right now the program runs in my crontab. When it runs, it sets a few
variables based on a query to a MySQL database. I would like to modify it
so that it can run as it is... or if arguments are supplied, use those
instead of querrying the database.

Will using this statement help me out?

if __name__ == "__main__":

I seem to recall that this returns true if it is run as a script by python,
rather than as a module from another prog. Since I am going to run this
from a command line - or from my crontab... it will always return true as
far as I can tell.

Any suggestions to help me out.

Ultimately I want something like this pseudocode...

if (no args supplied):
curs.execute("""SELECT userid FROM users""")
data = curs.fetchall()
else:
data = sys.argv[1]

do something with data:
blah
blah
blah

Thanks in advance for your help.
 
P

PoD

I have a program that needs a little help.
Right now the program runs in my crontab. When it runs, it sets a few
variables based on a query to a MySQL database. I would like to modify it
so that it can run as it is... or if arguments are supplied, use those
instead of querrying the database.

Hint: len(sys.argv)
 
B

Bill Anderson

I have a program that needs a little help.
Right now the program runs in my crontab. When it runs, it sets a few
variables based on a query to a MySQL database. I would like to modify it
so that it can run as it is... or if arguments are supplied, use those
instead of querrying the database.

Will using this statement help me out?

if __name__ == "__main__":

I seem to recall that this returns true if it is run as a script by python,
rather than as a module from another prog. Since I am going to run this
from a command line - or from my crontab... it will always return true as
far as I can tell.

This allows you to set up your script to act differently when imported vs.
ran. For return code, you can put in things like "sys.exit(returnvalue)"
to exit w/non true.

Any suggestions to help me out.

Ultimately I want something like this pseudocode...

if (no args supplied):
curs.execute("""SELECT userid FROM users""")
data = curs.fetchall()
else:
data = sys.argv[1]


Personally, I'd go with:

try:
data = sys.argv[1]
except IndexError:
curs.execute(...)
data = curs.fetchall()

"Better to Ask Forgivness Than Permission"-ly y'rs.

Bill
 
A

Amy G

Thanks. I think I will probably use the len(sys.args) line. That seems
like a really staright forward approach since I will either be supplying an
argument - or not.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top