mTGGe 2025-04-01 13:29 采纳率: 0%
浏览 24

提问:Flask,使用db.create_all()后,数据表并没有被创建

运行代码

img


数据库操作

img


我的代码执行后,为什么我的表结构没有被创建,网上找了一堆都不行,什么pyclient,pymysql驱动都试过,app.app_context什么都试过,数据库权限是没问题的,创建的数据库也存在
uri改成mysql+pymysql://root:helloczc@127.0.0.1:3306/czca也试过了
就是运行后,页面能正常访问,数据库什么也没发生

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-04-01 13:29
    关注

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

    解答

    Flask 提供了一个名为 db 的对象,可以用来创建数据库表结构。db.create_all() 方法可以用来创建所有未创建的表结构。

    如果你的表结构没有被创建,可能是因为以下几个原因:

    1. 数据库连接错误:确保你的数据库连接正确,包括用户名、密码、主机名、端口号等。
    2. 表结构已经存在:如果你的表结构已经存在,db.create_all() 方法将不会创建新的表结构。
    3. Flask 应用程序没有被初始化:db.create_all() 方法需要在 Flask 应用程序被初始化后才能使用。

    以下是一个简单的示例代码,演示如何使用 db.create_all() 方法创建表结构:

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
    db = SQLAlchemy(app)
    
    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(100), nullable=False)
    
    db.create_all()
    

    在上面的代码中,我们首先创建了一个 Flask 应用程序,然后配置了数据库 URI。然后,我们定义了一个 User 模型,并使用 db.create_all() 方法创建表结构。

    如果你仍然遇到问题,可以尝试使用 db.metadata.create_all() 方法,它可以用来创建表结构,而不需要创建 Flask 应用程序。

    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column, Integer, String
    
    engine = create_engine('sqlite:///test.db')
    Base = declarative_base()
    
    class User(Base):
        __tablename__ = 'users'
        id = Column(Integer, primary_key=True)
        name = Column(String)
    
    Base.metadata.create_all(engine)
    

    希望这些信息能够帮助你解决问题。如果你仍然遇到问题,可以提供更多的代码和信息,以便更好地帮助你。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月1日