Snake's Home

Python中的config配置

Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置),所以可以自己写一个函数,实现读取config配置。

config文件的写法比较简单,[section]下配置key=value,一下是例子:db.conf

1
2
3
4
5
6
7
8
#配置数据库  
[database]
dbhost=127.0.0.1
dbport=3366
dbname=test
dbuser=test
dbpassword=test
dbcharset=utf8

接着写一个读取config的方法模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#encoding:utf-8  
#name:mod_config.py

import ConfigParser
import os

#获取config配置文件
def getConfig(section, key):
config = ConfigParser.ConfigParser()
path = os.path.split(os.path.realpath(__file__))[0] + '/db.conf'
config.read(path)
return config.get(section, key)

#其中 os.path.split(os.path.realpath(__file__))[0] 得到的是当前文件模块的目录

ConfigParser 是Python自带的模块, 用来读写配置文件, 用法及其简单。 直接上代码,不解释,不多说。

配置文件的格式是: []包含的叫section, section 下有option=value这样的键值
配置文件:test.conf

1
2
3
4
5
6
7
[section1]  
name = anderson
sex = male

[section2]
ip = 192.168.1.1
port = 8080

读写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# -* - coding: UTF-8 -* -    
import ConfigParser

conf = ConfigParser.ConfigParser()
conf.read("c:\\test.conf")

# 获取指定的section, 指定的option的值
name = conf.get("section1", "name")
print(name)
age = conf.get("section1", "age")
print age

#获取所有的section
sections = conf.sections()
print sections

#写配置文件

# 更新指定section, option的值
conf.set("section2", "port", "8081")

# 写入指定section, 增加新option的值
conf.set("section2", "IEPort", "80")

# 添加新的 section
conf.add_section("new_section")
conf.set("new_section", "new_option", "http://xieming.github.io")

# 写回配置文件
conf.write(open("c:\\test.conf","w"))

数据库配置

1
2
3
4
5
[dbsetting]
host = 10.128.0.1
user = BOSTON\anderson
password = Good
database = ET_Main

数据库操作:

连接的是sqlserver,要安装pymssql这个模块。
mac上操作:

1
pip install pymssql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
__author__ = 'anderson'

#!/usr/bin/env python
#coding=utf-8
import sys
import pymssql
import ConfigParser


cf = ConfigParser.ConfigParser()
#read config
cf.read("ini.conf")
hostcf = cf.get("dbsetting", "host")
usercf = cf.get("dbsetting", "user")
passwordcf = cf.get("dbsetting", "password")
databasecf = cf.get("dbsetting", "database")

print(hostcf)



def execdb(query,querystr):
try:
conn = pymssql.connect(host=hostcf,user=usercf,password=passwordcf, database=databasecf)
except pymssql.OperationalError, msg:
print "error: Could not Connection SQL Server!please check your dblink configure!"
sys.exit()
else:
cur = conn.cursor()

#query="SELECT TOP 10 * FROM dbo.Members WHERE username = user"
print query
cur.execute(query)
conn.commit