I don't know why but if I do like that I have error: table.py db.define_table( 'recipes', Field('NAME',length=512), Field('IMAGE','*blob*'), migrate=False ) and query in controller: db().select(db.recipes.IMAGE).first() Версия web2py™ Version 2.18.5-stable+timestamp.2019.04.08.04.22.03 Python Python 3.7.3: C:\Program Files (x86)\Python37-32\python.exe (prefix: C:\Program Files (x86)\Python37-32)Traceback
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Traceback (most recent call last): File "C:\web2py\gluon\restricted.py", line 219, in restricted exec(ccode, environment) File "C:\web2py\applications\test\controllers/default.py", line 61, in <module> File "C:\web2py\gluon\globals.py", line 421, in <lambda> self._caller = lambda f: f() File "C:\web2py\applications\test\controllers/default.py", line 9, in index db().select(db.recipes.IMAGE).first() File "C:\web2py\gluon\packages\dal\pydal\objects.py", line 2395, in select return adapter.select(self.query, fields, attributes) File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 763, in select return self._select_aux(sql, fields, attributes, colnames) File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 742, in _select_aux return processor(rows, fields, colnames, cacheable=cacheable) File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 306, in parse for row in rows File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 303, in <listcomp> self._parse( File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 232, in _parse value = self.parse_value(value, fit, ft, blob_decode) File "C:\web2py\gluon\packages\dal\pydal\adapters\base.py", line 199, in parse_value return self.parser.parse(value, field_itype, field_type) File "C:\web2py\gluon\packages\dal\pydal\parsers\__init__.py", line 100, in parse return self.registered[field_itype](value, field_type) File "C:\web2py\gluon\packages\dal\pydal\parsers\__init__.py", line 75, in __call__ return self.call(value, field_type) File "C:\web2py\gluon\packages\dal\pydal\parsers\__init__.py", line 72, in _call return self.f(self.parser, value) File "C:\web2py\gluon\packages\dal\pydal\parsers\base.py", line 37, in _blob decoded = b64decode(to_bytes(value)) File "C:\web2py\gluon\packages\dal\pydal\_compat.py", line 131, in to_bytes raise TypeError('Expected bytes') TypeError: Expected bytes Error snapshot [image: help] <http://127.0.0.1:8000/admin/default/ticket/test/127.0.0.1.2019-08-09.23-35-41.70898352-368b-4941-a3b8-c3eb55b113f9#> TypeError(Expected bytes) inspect attributes Frames - *File C:\web2py\gluon\restricted.py in restricted at line 219* код аргументы переменные - *File C:\web2py\applications\test\controllers\default.py in <module> at line 61* код аргументы переменные - *File C:\web2py\gluon\globals.py in <lambda> at line 421* код аргументы переменные - *File C:\web2py\applications\test\controllers\default.py in index at line 9* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\objects.py in select at line 2395* код аргументы переменные Code listing 2390. 2391. 2392. 2393. 2394. 2395. 2396. 2397. 2398. 2399. attributes.get('join', None), attributes.get('left', None), attributes.get('orderby', None), attributes.get('groupby', None)) fields = adapter.expand_all(fields, tablenames) return adapter.select(self.query, fields, attributes) def iterselect(self, *fields, **attributes): adapter = self.db._adapter tablenames = adapter.tables(self.query, - *File C:\web2py\gluon\packages\dal\pydal\adapters\base.py in select at line 763* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\adapters\base.py in _select_aux at line 742* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\adapters\base.py in parse at line 306* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\adapters\base.py in <listcomp> at line 303* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\adapters\base.py in _parse at line 232* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\adapters\base.py in parse_value at line 199* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\parsers\__init__.py in parse at line 100* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\parsers\__init__.py in __call__ at line 75* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\parsers\__init__.py in _call at line 72* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\parsers\base.py in _blob at line 37* код аргументы переменные - *File C:\web2py\gluon\packages\dal\pydal\_compat.py in to_bytes at line 131* код аргументы переменные Function argument list (obj=<fdb.fbcore.BlobReader object>, charset='utf-8', errors='strict') Code listing 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. return None if isinstance(obj, (bytes, bytearray, memoryview)): return bytes(obj) if isinstance(obj, str): return obj.encode(charset, errors) raise TypeError('Expected bytes') def to_native(obj, charset='utf8', errors='strict'): if obj is None or isinstance(obj, str): return obj Is it bug of DAL or it's normal? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/959c7084-f409-4abb-aa6b-eaf52c872788%40googlegroups.com.