orm.py 源代码有错误
Topic sourceconfig.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']将取不到值
首先啊 廖老师从项目开始 文章中的代码 就跟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
这个名字足够长
在orm.py文件中应该讲第22行
改为:
因为您在config_default.py文件中定义的结构为: