Opened 19 years ago
Closed 17 years ago
#2918 closed defect (fixed)
"ValueError: too many values to unpack" when doing the tutorial.
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | |
| Severity: | blocker | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
hi, I did my first django installation on a debian/unstable.
I installed sqlite3 and pysqlite2 from debian packages. I installed django-0.95 like shown on http://www.djangoproject.com/documentation/install/.
Here's what I entered and what happened (you can see the error at the bottom):
...
File settings.py saved
tklopp@muschel:~/Projekte/django/mysite$ python manage.py sql polls
BEGIN;
CREATE TABLE "polls_poll" (
"id" integer NOT NULL PRIMARY KEY,
"question" varchar(200) NOT NULL,
"pub_date" datetime NOT NULL
);
CREATE TABLE "polls_choice" (
"id" integer NOT NULL PRIMARY KEY,
"poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),
"choice" varchar(200) NOT NULL,
"votes" integer NOT NULL
);
COMMIT;
tklopp@muschel:~/Projekte/django/mysite$ python manage.py validate polls
0 errors found.
tklopp@muschel:~/Projekte/django/mysite$ python manage.py sqlinitialdata
polls
BEGIN;
COMMIT;
tklopp@muschel:~/Projekte/django/mysite$ python manage.py syncdb
Creating table polls_poll
Creating table polls_choice
Adding permission 'poll | Can add poll'
Adding permission 'poll | Can change poll'
Adding permission 'poll | Can delete poll'
Adding permission 'choice | Can add choice'
Adding permission 'choice | Can change choice'
Adding permission 'choice | Can delete choice'
tklopp@muschel:~/Projekte/django/mysite$ python manage.py shell
Python 2.4.4c1 (#2, Oct 12 2006, 21:41:47)
[GCC 4.1.2 20061007 (prerelease) (Debian 4.1.1-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from mysite.polls.models import Poll, Choice
>>> Poll.Objects.all()
Traceback (most recent call last):
File "<console>", line 1, in ?
AttributeError: type object 'Poll' has no attribute 'Objects'
>>> Poll.objects.all()
[]
>>> from datetime import datetime
>>> p = Poll(question="What's up?", pub_date=datetime.now())
>>> p.save()
>>> p.id()
Traceback (most recent call last):
File "<console>", line 1, in ?
TypeError: 'int' object is not callable
>>> p.id
1
>>> p.question
"What's up?"
>>> p.pub_date
datetime.datetime(2006, 10, 16, 21, 3, 5, 31007)
>>> p.pub_date = (2006,10,15,21,3,5,31007)
>>> p.save
<bound method Poll.save of <Poll: Poll object>>
>>> p.save)=
File "<console>", line 1
p.save)=
^
SyntaxError: invalid syntax
>>> p.save()
>>> p.pub_date
(2006, 10, 15, 21, 3, 5, 31007)
>>> Poll.objects.all()
Traceback (most recent call last):
File "<console>", line 1, in ?
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 97, in __repr__
return repr(self._get_data())
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 430, in _get_data
self._result_cache = list(self.iterator())
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 172, in iterator
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") +
",".join(select) + sql, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/util.py",
line 12, in execute
return self.cursor.execute(sql, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/sqlite3/base.py",
line 77, in execute
return Database.Cursor.execute(self, query, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/util.py",
line 62, in typecast_timestamp
d, t = s.split()
ValueError: too many values to unpack
>>> Poll.objects.all()
Traceback (most recent call last):
File "<console>", line 1, in ?
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 97, in __repr__
return repr(self._get_data())
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 430, in _get_data
self._result_cache = list(self.iterator())
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 172, in iterator
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") +
",".join(select) + sql, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/util.py",
line 12, in execute
return self.cursor.execute(sql, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/sqlite3/base.py",
line 77, in execute
return Database.Cursor.execute(self, query, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/util.py",
line 62, in typecast_timestamp
d, t = s.split()
ValueError: too many values to unpack
>>>
>>>
>>>
>>>
>>> Poll.objects.all()
Traceback (most recent call last):
File "<console>", line 1, in ?
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 97, in __repr__
return repr(self._get_data())
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 430, in _get_data
self._result_cache = list(self.iterator())
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/models/query.py",
line 172, in iterator
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") +
",".join(select) + sql, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/util.py",
line 12, in execute
return self.cursor.execute(sql, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/sqlite3/base.py",
line 77, in execute
return Database.Cursor.execute(self, query, params)
File
"/usr/lib/python2.4/site-packages/Django-0.95-py2.4.egg/django/db/backends/util.py",
line 62, in typecast_timestamp
d, t = s.split()
ValueError: too many values to unpack
>>> quit
'Use Ctrl-D (i.e. EOF) to exit.'
>>>
tklopp@muschel:~/Projekte/django/mysite$
#######################################################
Next I inserted a line "print s" before line 62.
The output was:
>>> Poll.objects.all()
(2006, 10, 15, 21, 3, 5, 31007)
Traceback (most recent call last):
...
Change History (8)
comment:1 by , 19 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:2 by , 19 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
comment:3 by , 19 years ago
I forgot to annotate the fact that the last comment refers to changeset [4105]
comment:4 by , 19 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:5 by , 18 years ago
I saw this same error with a time.struct_time as input. That should be automatically converted IMO:
from time import localtime
from datetime import datetime
x = localtime()
datetime(*x[:6])
datetime.datetime(2007, 3, 4, 1, 0, 39)
comment:6 by , 17 years ago
| Component: | Admin interface → Database wrapper |
|---|
comment:7 by , 17 years ago
I can't replicate this. With Python 2.5.2 and latest Django from SVN doing:
p.pub_date = (2006,10,15,21,3,5,31007)
p.save()
correctly throws a ValidationError.
Can this be closed?
comment:8 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
I don't think this is a current bug any longer. Working through the tutorial doesn't raise any such errors.
(In [3960]) Fixes #2918 -- Clarified the db_prep_save logic for DateField and DateTimeField to prevent accidental conversion of non-datetime objects into strings, because SQLite doesn't appear to check for valid date format in a string used on an UPDATE of a datetime column.