gpt4 book ai didi

python - 如何让 SQLAlchemy 与现有数据库一起使用 mysql

转载 作者:行者123 更新时间:2023-11-29 06:44:56 24 4
gpt4 key购买 nike

我在使用 sqlalchemy 操作 mysql 中的现有数据库时遇到问题,因为我需要它来构建 Flask RESTful api。

我在这里遇到了关于循环依赖的有趣错误:

from flask import Flask, request, jsonify, make_response
from flaskext.mysql import MySQL
from flask_sqlalchemy import SQLAlchemy

#from webapi import models

# mysql = MySQL()
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey' #for use later
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:password@127.0.0.1/mydb'

db = SQLAlchemy(app)

class Extensions(db.Model):

__tablename__ = "Extensions"

extnbr = db.Column(db.Integer, primary_key=True, default="NULL")
authname = db.Column(db.String(256), nullable=True, default="@nobody")
extpriority = db.Column(db.Integer, nullable=True, default=0)
callaccess = db.Column(db.Integer, nullable=True, default=0)
extlocation = db.Column(db.String, nullable=True, default="NULL")
display = db.Column(db.String, nullable=True, default="NULL")

@app.route("/")
def hello():
return "Welcome to Python Flask App!"

@app.route("/extensions", methods=["GET"])
def get_all_extensions():
users = Extensions.query.all()

output = []

for user in users:
user_data = {}
user_data['extnbr'] = user.extnbr
user_data['authname'] = user.authname
user_data['extpriority'] = user.extpriority
user_data['callaccess'] = user.callaccess
user_data['extlocation'] = user.extlocation
user_data['display'] = user.display
output.append({'extensions' : output})

return jsonify({'users' : output})

if __name__ == "__main__":
app.run(debug=True)

我收到有关循环依赖的错误:

调试和跟踪:

https://dpaste.de/F3uX

最佳答案

这与您的输出有关。您将包含 output 的字典附加到 output 本身,创建了一个时髦的数据结构,导致 json 错误。

尝试改变

 output.append({'extensions' : output})

对此:

output.append({'extensions' : user_data })

(我认为这就是你想要的)

关于python - 如何让 SQLAlchemy 与现有数据库一起使用 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49954262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com