【问题标题】:Python - TypeError: an integer is requiredPython - TypeError:需要一个整数
【发布时间】:2015-07-14 06:08:38
【问题描述】:

我正在尝试创建一个数据库来保存用户和攀登,从用户到用户完成的攀登具有一对多的关系。

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 控制台测试数据库。我已经成功创建了一个用户,并尝试向数据库添加爬升,但是当我使用以下命令集时,不断收到“TypeError: an integer is required”:

>>> 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 是一个整数)。

非常感谢任何帮助。

【问题讨论】:

  • 如果你设置self.flash = True,会发生什么?
  • 与您的异常无关,但传递给climb_date 的日期格式不正确。您正在传递 '%Y-%m-%d' 并期待 '%Y%m%d'
  • 另外,请提供flaskflask-sqlalchemysqlalchemy的版本以帮助调试。谢谢
  • 我只是尝试将 True 作为参数传递,但它不起作用(同样的错误)。 Flask==0.10.1, Flask-SQLAlchemy==2.0, SQLAlchemy==0.9.9
  • 提示:请使用关键字参数,尤其是当你有很多关键字时。

标签: python python-2.7 flask typeerror


【解决方案1】:

数据库中对应表的列可能不是 SQLAlchemy 所需的正确类型。

【讨论】:

    猜你喜欢
    • 2016-05-23
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2018-05-04
    • 1970-01-01
    • 2015-08-10
    • 2013-02-16
    相关资源
    最近更新 更多