【问题标题】:I have an Error with python flask cause of an API result (probably cause of my list) and my Database我有一个 API 结果的 python 烧瓶错误(可能是我的列表的原因)和我的数据库
【发布时间】:2023-03-20 18:09:01
【问题描述】:

我在 SQLite 中使用烧瓶、api 和 SQLAlchemy。 我从 python 和 flask 开始,但列表有问题。

我的应用程序工作,现在我尝试新闻功能。 我需要知道我的 json 信息是否在我的数据库中。 函数 find_current_project_team() 获取 API 中的信息。

def find_current_project_team():
    headers = {"Authorization" : "bearer "+session['token_info']['access_token']}
    user = requests.get("https://my.api.com/users/xxxx/", headers = headers)
    user = user.json()
    ids = [x['id'] for x in user]
    return(ids)

我用ids = [x['id'] for x in user](和那个一样):

ids = []
for x in user:
    ids.append(x['id'])

获取ids 信息。 ids信息是api中的id,我需要它。 我有这个结果:

[2766233, 2766237, 2766256]

我想在我的数据库中逐一检查值。 如果值不存在,我想添加它。 如果存在一个或所有值,我想检查并返回“不可能对不起,ids 已经存在”。

为此我编写了一个新函数:

def test():
    test = find_current_project_team()
    for find_team in test:
        find_team_db = User.query.filter_by(
            login=session['login'], project_session=test
        ).first()

我完全不知道如何逐个检查值。

如果有人可以帮助我,谢谢你:)

其实我有这个错误:

sqlalchemy.exc.InterfaceError: (InterfaceError) 错误绑定 参数 1 - 可能不受支持的类型。 '选择 user.id 作为 user_id, user.login AS user_login, user.project_session AS user_project_session \nFROM 用户\nWHERE user.login = ? AND user.project_session = ?\n 限制 ?抵消 ?' ('my_tab_login', [2766233, 2766237, 2766256], 1, 0)

【问题讨论】:

标签: python sqlalchemy


【解决方案1】:

在我看来,您将列表直接传递到数据库查询中:

def test():
    test = find_current_project_team()
    for find_team in test:
        find_team_db = User.query.filter_by(login=session['login'], project_session=test).first()

相反,您应该只传递 ID:

def test():
    test = find_current_project_team()
    for find_team in test:
        find_team_db = User.query.filter_by(login=session['login'], project_session=find_team).first()

除此之外,我认为您可以在命名约定方面做得更好:

def test():
    project_teams = find_current_project_team()
    for project_team in project_teams:
        project_team_result = User.query.filter_by(login=session['login'], project_session=project_team).first()

【讨论】:

  • 谢谢兄弟。它有些工作,现在我在我的数据库中添加结果时出现了新错误(我认为它与我的用户表不匹配)``` sqlalchemy.exc.IntegrityError: (IntegrityError) UNIQUE constraint failed: user.login 'INSERT INTO用户(登录名,project_session)值(?,?)'('salty','2766233')```
  • 您可以将模型的代码 sn-p 添加到问题中吗?
【解决方案2】:

感谢所有作品

我的代码:

    project_teams = find_current_project_team()
    for project_team in project_teams:
        project_team_result = User.query.filter_by(project_session=project_team).first()
        print(project_team_result)
        if project_team_result is not None:
            print("not none")
        else:
            project_team_result = User(login=session['login'], project_session=project_team)
            db.session.add(project_team_result)
            db.session.commit()

【讨论】:

    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 2021-10-21
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多