Discuss / Python / 按照评论中的代码,改好后还是ERROR:2003,已改成了神经病

按照评论中的代码,改好后还是ERROR:2003,已改成了神经病

Topic source

cherishdy

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

import orm from models import User, Blog, Comment import asyncio

async def test(loop): await orm.create_pool(loop=loop, user = 'user', password ='password', db='awesome') u = User(name='Test', email='test@example.com', passwd='1234567890', image='about:blank') await u.save()

loop =asyncio.get_event_loop()
loop.run_until_complete(test(loop)) loop.close()

cherishdy

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

数据库awesome也已经提前创建了,但是为什么必须要连接user数据库,我不是参数写的db='awesome'么,不是很懂orm.py里面的__pool参数 db=kw['user'] 为什么不能写成db=kw['awesome'] 写成db=kw['user']报错: pymysql.err.InternalError: (1049, "Unknown database 'user'") 写成db=kw['awesome']报错: File "D:\awesome-python3-webapp\www\orm.py",line 20, in create_pool db=kw['awesome'], KeyError: 'awesome' 还能不能给条活路!!!!

老兄 这个KeyError是kw这个字典取值时用key='awesome'拿不到值抛出的异常

所以需要按照参数名传参

你得将test.py改一下:

import orm from models import User import asyncio

async def test(loop):
    await orm.create_pool(loop=loop, user='www-data', password='www-data', db='awesome')#注意: db='awesome' 请看回orm.py的create_pool方法
    u = User(name='Test', email='test@example.com', passwd='1234567890', image='about:blank')
    await u.save()

loop = asyncio.get_event_loop() loop.run_until_complete(test(loop)) print('Compete !')

Adminwang

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

想请问一下@景仰之信念,在print('Compete !')后面加上loop.close(),会报错误:RuntimeError:Event loop is closed. 但是数据还是插入users表中。请问有什么好的解决办法吗?


  • 1

Reply