账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    刚学flask,往数据库添加数据好像添加不进去,前端获取到的都是一个空数组,请问应该怎么找出原因?
    41
    0
    from flask import Flask, session
    from flask import render_template
    from flask_script import Manager
    from flask import url_for
    from flask import request, jsonify, json
    
    from flask_cors import CORS
    
    from flask_sqlalchemy import SQLAlchemy
    import os
    
    from flask_marshmallow import Marshmallow
    
    basedir = os.path.abspath(os.path.dirname(__file__))
    
    
    app = Flask(__name__)
    
    cors = CORS(app, resources={r"/*": {"origins": "*"}})
    app.config['SECRET_KEY'] = 'a string'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + \
                                            os.path.join(basedir, 'data.sqlite')
    
    # 自动提交
    app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True
    
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
    manager = Manager(app)
    db = SQLAlchemy(app)
    ma = Marshmallow(app)
    
    
    class Article(db.Model):
        """docstring for Article"""
        __tablename__ = 'articles'
        id = db.Column(db.Integer, primary_key = True)
        title = db.Column(db.String(64))
        content = db.Column(db.Text)
    
    class ArticleSchema(ma.ModelSchema):
        class Meta:
            medel = Article
    
    @app.route('/')
    def index():
        articles = Article.query.all()
        articles_schema = ArticleSchema()
        output = articles_schema.dump(articles).data
        return jsonify({'articles': output})
    
    
    @app.route('/create', methods=['POST'])
    def create():
        title = request.form['title']
        content = request.form['content']
        article = Article(title=title, content=content)
        db.session.add(article)
        session['known'] = False
        
        return content
    
    
    if __name__ == '__main__':
        manager.run()
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 单身还能是贵族. 普通会员 1楼

      在Flask中,如果你试图向数据库中添加数据,但是前端获取到的数组结果是空的,这可能有以下几种原因:

      1. 模型中定义的字段缺失:首先,你需要确保你的模型中定义了所有需要在数据库中存储的字段。例如,如果你的模型有users表,其中包含id(主键)和name字段,你可以在你的模型文件(如users.py)中定义如下:

      ```python from flask_sqlalchemy import SQLAlchemy

      app = Flask(name) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' db = SQLAlchemy(app)

      class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) ```

      在这个例子中,id字段是一个整数类型,这是SQLite数据库支持的唯一主键类型。如果你的数据库只支持自增的整数字段,那么你可能需要将id字段定义为db.Column(db.Integer, autoincrement=True),这将设置id字段为自增的整数类型。

      1. 缺少数据库连接:确保你已经正确地连接到数据库。你可以通过以下代码检查数据库连接:

      ```python import os

      创建数据库连接

      app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL') db = SQLAlchemy(app)

      如果数据库连接不存在,尝试创建

      if not db.is_connected(): db.create_all() ```

      1. SQLAlchemy数据库连接配置问题:如果你的数据库配置文件(如database.ini)中没有正确设置数据库的URL,或者连接失败,那么你可能无法向数据库中添加数据。你需要确保你的数据库URL和端口设置正确,并且在配置文件中添加数据库连接信息。

      2. 字段名称错误:在数据库查询中,如果字段名拼写错误,或者使用了错误的SQL语法,可能会导致数据库查询失败,进而导致数据在数据库中丢失。你需要确保你正在使用正确的字段名,并且在你的SQL查询语句中正确地引用了数据库表中的字段。

      3. 数据库表存在:确保你的数据库表已经创建,且数据已经被添加到表中。你可以使用db.session.add()方法向数据库中添加数据,然后使用db.session.commit()db.session.rollback()方法提交更改或回滚更改。

      4. 数据库表已满:如果数据库表已经满,你可能无法向其中添加新的数据。你可以使用db.session.delete()方法删除表中的所有数据,然后使用db.session.commit()db.session.rollback()方法提交更改或回滚更改。

      5. 数据库表的索引设置:如果你的数据库表没有设置适当的索引,如主键索引,可能会导致数据在查询时性能下降,甚至无法正确找到数据。你可以使用db.create_index()方法为表中的字段设置索引,然后使用db.session.commit()db.session.rollback()方法提交更改或回滚更改。

      如果你尝试了以上所有可能的原因,但仍然无法在数据库中添加数据,那么可能需要查阅数据库的官方文档,以确定具体的问题所在。例如,如果你使用的是SQLite数据库,可以参考SQLite官方文档中的SQLAlchemy文档,以了解如何在数据库中添加、删除、更新和查询数据。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部