开发者

Include a .py-file, still not ruining cronjob (Python, beginner)?

开发者 https://www.devze.com 2023-03-28 16:48 出处:网络
I\'m building a service, which has a few cronjobs running, written in Python. However, this is my first Python-project ever, so I\'m still a very beginner.

I'm building a service, which has a few cronjobs running, written in Python. However, this is my first Python-project ever, so I'm still a very beginner.

What I'm doing now, is that I have my database-connection handled on every file, so basically if I wanted to change the host, I would need to go through all the files. I'm now looking into a PHP-include() similar method for Python, so that I could include some general stuff instead of copy-pasting.

Also, the Python-files are 开发者_C百科ran in cronjob, so the method should work on cronjobs too :)


If it's really just a couple of settings for a single database connection, just put it in a Python module and import it in all of your files. Why add any complexity you don't need?

If it's more complicated, use ConfigParser as @AdamMatan suggested.

# dbconfig.py
host = '127.0.0.1'
user = 'stack'
password = 'overflow'

# db.py

import dbconfig
print dbconfig.host
print dbconfig.user
print dbconfig.password


Use an external configuration file, with your db connection (host, name, password, db, ...) in it, and read the configuration file from within the Python script.

This makes changes easy (even for non-programmers) and nicely complies with the Single Choice Principle.

Example:

db.cfg

[db]
host=127.0.0.1
user=stack
password=overflow

db.py

import ConfigParser

config = ConfigParser.ConfigParser()
config.readfp(open('db.cfg'))

print config.get('db', 'host')

Execution result:

127.0.0.1


If you need to call __import__(), you are doing it wrong.

You need to refactor your code so that you no longer have the database connection routines scattered throughout your codebase. Yes, it would be even nicer to have these details in a configuration file (+1 @Adam Matan), but first you need to eliminate the duplication. This will save you a world of pain in the long run.

0

精彩评论

暂无评论...
验证码 换一张
取 消