2301_77456439 2025-03-25 10:04 采纳率: 0%
浏览 8

学flask出现UnmappedInstanceError

学习flask为什么会出现以下报错呀网上找了很久都没有找到解决方法:

UnmappedInstanceError
sqlalchemy.orm.exc.UnmappedInstanceError: Class 'builtins.tuple' is not mapped

img


from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text

app = Flask(__name__)

# MySQL所在的主机名
HOSTNAME = '127.0.0.1'
# MySQL监听的端口号
PORT = 3306
# 连接MySQL的用户名,读者自己设置的
USERNAME = 'root'
# 连接MySQL的密码,读者自己设置的
PASSWORD = 'cqa23333'
# MySQL上创建的数据库名称
DATABASE = 'database_learn'

app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}/{DATABASE}?charset=utf8mb4'


# 在app.config设置好连接数据库的信息
# 然后使用SQLAlchemy(app)创建一个db对象
#SQLAlchemy会自动读取app.config中连接数据库的信息

db = SQLAlchemy(app)
# with app.app_context():
#    with db.engine.connect() as conn:
#        print(result.fetchone()) #输出一个1


class User123(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)
with app.app_context():
    db.create_all()
#user = User(username='陈启安', password='123456')
#等于sql insert user(username,password) values('陈启安’,‘123456’)
@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'

@app.route('/user/add')
def add_user():
    user1 = User123(username="user1",password="123456"),
    user2 = User123(username="user2",password="654321"),
    user3 = User123(username="user3",password="321456")
    db.session.add(user1)
    db.session.add(user2)
    db.session.add(user3)
    db.session.commit()
    return 'user1 add success'


if __name__ == '__main__':
    app.run()
  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-25 10:04
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    UnmappedInstanceError 是 SQLAlchemy 中的一个错误,表示你尝试将一个未映射的实例传递给 ORM 的方法中。

    在 Flask 中,如果你使用了 SQLAlchemy 作为 ORM,可能会出现这个错误。以下是一些可能导致这个错误的原因:

    1. 未正确地映射模型:确保你已经正确地映射了你的模型到数据库中。
    2. 未正确地使用 Session:确保你已经正确地使用了 Session 对象来访问数据库。
    3. 未正确地使用 Query:确保你已经正确地使用了 Query 对象来查询数据库。

    以下是一个简单的示例代码,演示如何正确地使用 SQLAlchemy 和 Flask:

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:password@localhost/dbname'
    db = SQLAlchemy(app)
    
    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(100), nullable=False)
    
    @app.route('/')
    def index():
        user = User(name='John')
        db.session.add(user)
        db.session.commit()
        return 'User added successfully!'
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    在上面的代码中,我们首先创建了一个 Flask 应用程序,然后使用 SQLAlchemy 创建了一个数据库连接。然后,我们定义了一个 User 模型,并使用 db.session 对象来添加一个用户。

    如果你仍然出现了 UnmappedInstanceError,请检查你的代码是否正确地映射了模型,并且正确地使用了 Session 和 Query 对象。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日