Я пытаюсь добавить в свою базу данных sqlalchemy название всего фильма из текстового файла в виде элемента.
но, похоже, я могу использовать обычный метод (например, open('filename')
) для чтения текстового файла в файле моего приложения.
Так что я пытаюсь сделать это в другом файле, но мне не удается импортировать БД (база данных)
пришло сообщение об ошибке:
ImportError: cannot import name 'db' from '__main__' (/home/chrys/deploy/initdata.py)
каталог
deploy/
|api.py #the app file
|initdata.py # the file where i try to import title fom txt file
здесь код инициализации:
from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
from . import db
from api import Movie
file = open("movie_t-utf8.txt", "r")
to_add =[]
for line in file.readlines():
item = line.split('|')
if item[1][-1:] == '\n':
item[1] = item[1][:-1]
film = Movie(id = item[0], title=item[1])
db.session.add(film)
db.session.commit()
А вот код API:
from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
#print(os.listdir("../deploy"))
app = Flask(__name__)
app.config["DEBUG"] = True
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
username="user",
password="00000000",
hostname="user.mysql.pythonanywhere-services.com",
databasename="user$movies",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
ma = Marshmallow(app)
class Movie(db.Model):
__tablename__ = "movies"
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200))
db.drop_all()
db.create_all()
film = Movie(id = 1, title="Star Wars")
db.session.add(film)
db.session.commit()
class MovieSchema(ma.ModelSchema):
class Meta:
model = Movie
@app.route('/', methods=['GET'])
def index():
return jsonify({'message' : 'Deployeeeeded'})
@app.route('/film', methods=['GET'])
def returnAll():
one_film = Movie.query.first()
movie_schema = MovieSchema()
output = movie_schema.dump(one_film).data
return jsonify({ 'film' : output})
if __name__ == '__main__':
app.run()
Заранее спасибо за любую помощь