Discuss / Python / orm.py 源代码有错误

orm.py 源代码有错误

Topic source

在orm.py文件中应该讲第22行

db=kw['db']

改为:

db = kw['database']

因为您在config_default.py文件中定义的结构为:

configs = {
    'debug': True,
    'db': {
        'host': '127.0.0.1',
        'port': 3306,
        'user': 'www',
        'password': 'www',
        'db': 'awesome'
    },
    'session': {
        'secret': 'Awesome'
    }
}

zhang20142014

#2 Created at ... [Delete] [Delete and Lock User]

config.py

def toDict(d):
    D = Dict()
    for k, v in d.items():
        D[k] = toDict(v) if isinstance(v, dict) else v
    return D

config_default.py

configs = {
    'debug': True,
    'db': {
        'host': '127.0.0.1',
        'port': 3306,
        'user': 'www',
        'password': 'www',
        'db': 'awesome'
    },
    'session': {
        'secret': 'Awesome'
    }
}

def init(loop): yield from orm.create_pool(loop=loop, **configs.db) 哪里错了?哥们上面有递归呀

廖大写的对着呢

这是app.py的连接数据库的代码

async def init(loop):
    print(configs)
    await orm.create_pool(loop=loop, host='127.0.0.1', port=3306, user='root', password='test', db='awesome')
    #await orm.create_pool(loop=loop, **configs.db)
    ...

这是orm.py中的代码

async def create_pool(loop, **kw):
    logging.info('create database connection pool...')
    global __pool
    __pool = await aiomysql.create_pool(
        host=kw.get('host', 'localhost'),
        port=kw.get('port', 3306),
        user=kw['user'],
        password=kw['password'],
        db=kw['db'],
        charset=kw.get('charset', 'utf8'),
        autocommit=kw.get('autocommit', True),
        maxsize=kw.get('maxsize', 10),
        minsize=kw.get('minsize', 1),
        loop=loop
    )

所以如果将db=kw['db']改为db = kw['database'],kw['db']将取不到值

完美佩恩

#4 Created at ... [Delete] [Delete and Lock User]

首先啊 廖老师从项目开始 文章中的代码 就跟github上不完全一致了。一开始文章里的config_default configs = { 'db':{ 'host':'127.0.0.1', 'port':3306, 'user':'root', 'password':'root', 'database':'awesome' #注意这里是database

},
'session':{
    'secret':'AwEsOmE'
}

} 如果你引入的时候这么写呢 那么 在app.py 里面的 kw['db'] 会报KeyError的 因为configs.db里没有db这个元素,要么你改成db 要么把kw[db] 改成database .这或许是你们争论的问题吧。


  • 1

Reply