2015-05-04 26 views
3

我想创建一个数据库来保存用户,并爬上用户的一对多关系,以攀登用户已完成。Python - TypeError:一个整数是必需的

class Climb(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    date = db.Column(db.DateTime) 
    name = db.Column(db.String(64)) 
    flash = db.Column(db.Boolean) 
    notes = db.Column(db.Text) 
    type_of_climb = db.Column(db.String(32)) 
    difficulty = db.Column(db.String(5)) 
    location = db.Column(db.String(64)) 
    favorite = db.Column(db.Boolean) 
    user_id = db.Column(db.Integer, db.ForeignKey('user.id')) 

    def __init__(self, climb_date, name, flash, notes, type_of_climb, difficulty, location, favorite, user_id): 
     set_date = datetime.strptime(climb_date, '%Y%m%d').date() 
     self.date = set_date 
     self.name = name 
     self.flash = flash 
     self.notes = notes 
     self.type_of_climb = type_of_climb 
     self.difficulty = difficulty 
     self.location = location 
     self.favorite = favorite 
     self.user_id = user_id 

我想在PyCharm中使用Python控制台测试数据库。我已经成功地创建了一个用户,我试图添加攀登到数据库,但不断收到“类型错误:一个整数需要”当我使用以下命令集:

>>> from flask import Flask 
>>> from app import app, db 
>>> db.create_all() 
>>> from app import User, Climb 
>>> c = Climb('2015-05-02', 'Climb so high', 1, 'Made it happen', 'Trad', '5.8', 'Nepal', 0, 1) 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "<string>", line 4, in __init__ 
    File "/home/logan/Desktop/DEV/git/Climb-On/climb-on-api/flask/local/lib/python2.7/site-packages/sqlalchemy/orm/state.py", line 269, in _initialize_instance 
    return manager.original_init(*mixed[1:], **kwargs) 
    File "/home/logan/Desktop/DEV/git/Climb-On/climb-on-api/app.py", line 50, in __init__ 
    self.flash = flash 
TypeError: an integer is required 

我以完全混淆我是如何得到这个错误的(flash是第三个传递的参数,而我的帐户1是一个整数)。

任何帮助,非常感谢。

+1

如果设置'self.flash = True',会发生什么? – RafaelC

+0

与您的异常无关,但传递给'climb_date'的日期格式不正确。您正在传递'%Y-%m-%d''并期待''%Y%m%d'' –

+0

也请提供'flask','flask-sqlalchemy','sqlalchemy'的版本帮助调试。谢谢 –

回答

0

根据SQLAlchemy的需要,DB中对应表的列可能不是正确类型。

相关问题