我想在我的网上实现帐户注册。一切运行正常,只有一个错误,我无法在我的aiomysql中插入帐户信息。这里有回溯:
INFO:root:Request: POST /api/users
INFO:root:check user: POST /api/users
INFO:root:Response handler...
INFO:root:call with args: {'passwd': '1a4eb93dd425112e9b64374172fede31d85c462d', 'email': 'mike@163.com', 'name': 'mike'}
INFO:root:SQL: select `id`, `created_at`, `image`, `admin`, `passwd`, `name`, `email` from `users` where email=?
INFO:root:rows returned: 0
INFO:root:SQL: insert into `users` (`created_at`, `image`, `admin`, `passwd`, `name`, `email`, `id`) values (?, ?, ?, ?, ?, ?, ?)
ERROR:aiohttp.web:Error handling request
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/aiohttp/server.py", line 266, in start
yield from self.handle_request(message, payload)
File "/usr/lib/python3/dist-packages/aiohttp/web.py", line 87, in handle_request
resp = yield from handler(request)
File "/home/carrot/hqinawesomewebapp/www/app.py", line 46, in logger
return (await handler(request))
File "/home/carrot/hqinawesomewebapp/www/app.py", line 61, in auth
return (await handler(request))
File "/home/carrot/hqinawesomewebapp/www/app.py", line 80, in response
r = await handler(request)
File "/usr/lib/python3.5/asyncio/coroutines.py", line 219, in coro
res = yield from await_meth()
File "/home/carrot/hqinawesomewebapp/www/coroweb.py", line 136, in __call__
r = await self._func(**kw)
File "/usr/lib/python3.5/asyncio/coroutines.py", line 219, in coro
res = yield from await_meth()
File "/home/carrot/hqinawesomewebapp/www/handlers.py", line 174, in api_register_user
await user.save()
File "/home/carrot/hqinawesomewebapp/www/orm.py", line 218, in save
rows = await execute(self.__insert__, args)
File "/home/carrot/hqinawesomewebapp/www/orm.py", line 53, in execute
await cur.execute(sql.replace('?', '%s'), args)
File "/usr/local/lib/python3.5/dist-packages/aiomysql/cursors.py", line 237, in execute
query = query % self._escape_args(args, conn)
File "/usr/local/lib/python3.5/dist-packages/aiomysql/cursors.py", line 196, in _escape_args
return tuple(conn.escape(arg) for arg in args)
File "/usr/local/lib/python3.5/dist-packages/aiomysql/cursors.py", line 196, in <genexpr>
return tuple(conn.escape(arg) for arg in args)
File "/usr/local/lib/python3.5/dist-packages/aiomysql/connection.py", line 356, in escape
return escape_item(obj, self._charset)
File "/usr/local/lib/python3.5/dist-packages/pymysql/converters.py", line 27, in escape_item
val = encoder(val, mapping)
File "/usr/local/lib/python3.5/dist-packages/pymysql/converters.py", line 110, in escape_unicode
return u"'%s'" % _escape_unicode(value)
File "/usr/local/lib/python3.5/dist-packages/pymysql/converters.py", line 73, in _escape_unicode
return value.translate(_escape_table)
AttributeError: 'builtin_function_or_method' object has no attribute 'translate'
在我的例子中,我可以进行选择操作,所以我的orm.py是可以的。但是当插入一个新的帐户时,页面就会发生这样的情况: " (HTTP500)有什么问题吗?“thx :-)
发布于 2016-12-15 15:21:37
很可能是将函数(func
)作为参数而不是函数调用结果(func()
)传递到SQL中。
发布于 2016-12-16 06:11:59
在我的中间件中,有一个名为auth_factory的函数来验证用户:
async def auth_factory(app, handler):
async def auth(request):
logging.info('check user: %s %s' % (request.method, request.path))
request.__user__ = None
cookie_str = request.cookies.get(COOKIE_NAME)
if cookie_str:
user = await cookie2user(cookie_str)
if user:
# i wrong here
logging.info('set current user: %s' % user.email)
...
我在user.email (如user.eamil )中出现了一个错误,那么一切正常,为什么这个中间件功能影响这么大?我甚至不能把数据插入mysql,这两者有一定的关系吗?
https://stackoverflow.com/questions/41157683
复制相似问题