Python ConfigParser - 模块对象在Fedora 23中不可调用

时间:2017-09-27 12:48:56

标签: python-2.7 configparser

尝试从python中读取.ini db文件以测试与PostGres数据库的连接

Python版本2.7.11

在Fedora中,我安装了

sudo dnf install python-configparser

安装1个包

总下载大小:41 k 安装尺寸:144 k 这没关系[y / N]:y 下载包:

python-configparser-3.5.0b2-0.2.fc23.noarch.rpm 40 kB / s | 41 kB 00:01

总计31 kB / s | 41 kB 00:01 运行事务检查 交易检查成功。 运行事务测试 交易测试成功。 运行事务   安装:python-configparser-3.5.0b2-0.2.fc23.noarch 1/1   验证:python-configparser-3.5.0b2-0.2.fc23.noarch 1/1

安装:   python-configparser.noarch 3.5.0b2-0.2.fc23

在我的config.py中我做了

import configparser

当我运行我的脚本时,我得到'module'对象不可调用

db.ini

[test1]
host=IP address
database=db
port=5432
user=username
password=pswd

[test2]
host=localhost
database=postgres
port=7999
user=abc
password=abcd

config.py

#!/usr/bin/env python
#from configparser import ConfigParser
import configparser


def config(filename='database.ini', section='gr'):
    # create a parser
    parser = configparser()
    # read config file
    parser.read(filename)

    # get section, default to gr
    db = {}
    if parser.has_section(section):
        params = parser.items(section)
        for param in params:
            db[param[0]] = param[1]
    else:
        raise Exception('Section {0} not found in the {1} file'.format(section, filename))

    return db

testing.py

#!/usr/bin/env python
import psycopg2
from config import config



def connect():
    """ Connect to the PostgreSQL database server """
    conn = None
    try:
        # read connection parameters
        params = config()

        # connect to the PostgreSQL server
        print('Connecting to the PostgreSQL database...')
        conn = psycopg2.connect(**params)

        # create a cursor
        cur = conn.cursor()

 # execute a statement
        print('PostgreSQL database version:')
        cur.execute('SELECT version()')

        # display the PostgreSQL database server version
        db_version = cur.fetchone()
        print(db_version)

     # close the communication with the PostgreSQL
        cur.close()
    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
    finally:
        if conn is not None:
            conn.close()
            print('Database connection closed.')


if __name__ == '__main__':
    connect()

[root @svr mytest]#。/ testing.py 'module'对象不可调用

任何想法? 谢谢。

2 个答案:

答案 0 :(得分:2)

您的解析器创建出错,请参阅ConfigParser examples

  

再次读取配置文件的示例:

import ConfigParser

config = ConfigParser.RawConfigParser()
config.read('example.cfg')

在Python中,a module is basically just a file,所以如果你想使用这个模块中的任何东西,你必须从你想要的模块中指定什么。在您的情况下,将行更改为

# create a parser
parser = configparser.ConfigParser()

这样,您正在使用模块中的类ConfigParser

答案 1 :(得分:1)

您还可以使用以下内容导入解析器:

from configparser import ConfigParser

而不是

import configparser

我和你有同样的问题,这对我有用。