Ошибка при попытке создать мою таблицу в sqlalchemy => sqlalchemy.ex c .OperationalError: (sqlite3.OperationalError) нет такой таблицы: dht_new - PullRequest
0 голосов
/ 17 февраля 2020

Он не может найти мою базу данных, даже если я ее создал с помощью create_table? Я пытался поместить функцию create_Table "в разных местах без результата? Однако я получаю ошибку,

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: dht_new
[SQL: INSERT INTO dht_new (name) VALUES (?)]
[parameters: (None,)]

app.py

import os
from flask import Flask, request, jsonify
from flask_restful import Resource, Api
from flask_sqlalchemy import SQLAlchemy
from db import db


app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('SQLALCHEMY_DATABASE_URI', 'sqlite:///newdata.db')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

@app.before_first_request
def create_tables():
    db.create_all()


class fixdb(db.Model):
    __tablename__ = 'dht_new'

    id = db.Column(db.Integer, primary_key =True)
    name = db.Column(db.String(80))


    def __init__(self, temp):
        self.temp = temp

    def add_to_db(self):
        db.session.add(self)
        db.session.commit()


@app.route('/get', methods=['GET'])
def postrandom():
    temp = {'temperature': '23'}
    test_temp = fixdb(temp)

    test_temp.add_to_db()
    return jsonify(temp)



if __name__ == '__main__':
    from db import db
    db.init_app(app)
    app.run(port=5000, debug=True)

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

run.py

from app import app
from db import db

db.init_app(app)

@app.before_first_request
def create_tables():
    db.create_all()
0 голосов
/ 17 февраля 2020

Вам нужно сначала создать таблицу в базе данных SQLite. Вы можете использовать SQLite Browser, чтобы сделать то же самое, иначе используйте CLI python, чтобы создать таблицу. Поскольку вы не упомянули свое .py имя файла, поэтому я не могу точно показать вам код, но это будет что-то вроде
сначала наберите python в вашем терминале, затем

from app import db
db.drop_all()
db.create_all()

и это должно сделать это для вас.

...