Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask和SQLAlchemy,不从新数据库表导入数据_Python_Mysql_Flask_Sqlalchemy - Fatal编程技术网

Python Flask和SQLAlchemy,不从新数据库表导入数据

Python Flask和SQLAlchemy,不从新数据库表导入数据,python,mysql,flask,sqlalchemy,Python,Mysql,Flask,Sqlalchemy,我有一个使用flask和MySQL数据库以及SQLAlchemy构建的工作web应用程序 作为进一步开发的一部分,我在数据库中创建了一个名为“buggies”的新表。 数据库中以前的表(如post)是在web变成包之前设置的,我仍然可以向该表添加和删除post 但是,名为“buggies”的新表似乎没有在主页home.html上显示表内容 错误日志(摘录): 我似乎也无法通过bash中的SQLAlchemy、python3连接到数据库: >>> from flask_app i

我有一个使用flask和MySQL数据库以及SQLAlchemy构建的工作web应用程序

作为进一步开发的一部分,我在数据库中创建了一个名为“buggies”的新表。 数据库中以前的表(如post)是在web变成包之前设置的,我仍然可以向该表添加和删除post

但是,名为“buggies”的新表似乎没有在主页home.html上显示表内容

错误日志(摘录):

我似乎也无法通过bash中的SQLAlchemy、python3连接到数据库:

>>> from flask_app import db
>>> Post.query.all()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Post' is not defined
>>> from flask_app.models import db
>>> Post.query.all()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Post' is not defined

>>> from flask_app import db                                                                                                                                
>>> Buggies.query.all()                                                                                                                                     
Traceback (most recent call last):                                                                                                                          
  File "<stdin>", line 1, in <module>                                                                                                                       
NameError: name 'Buggies' is not defined                                                                                                                    
>>> from flask_app.models import db
>>> Buggies.query.all()                                                                                                                                     
Traceback (most recent call last):                                                                                                                          
  File "<stdin>", line 1, in <module>                                                                                                                       
NameError: name 'Buggies' is not defined                                                                                                                    
>>>  
init.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager

app = Flask(__name__)
app.config["DEBUG"] = True

app.config['SECRET_KEY'] = '...'

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
    username="xxxxx",
    password="xxxxx",
    hostname="xxxxx",
    databasename="xxxxx",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db  = SQLAlchemy(app)
bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'
login_manager.login_message_category = 'info'

from flask_app import routes
routes.py

@app.route('/')
@app.route('/h')
@app.route('/home')
def home():
    posts = Post.query.all()
    buggies = Buggies.query.all()
    return render_template('home.html', posts=posts, buggies=buggies)
home.html(layout.html中没有任何会导致问题的内容)

forms.py

class BuggyForm(FlaskForm):
    BName = StringField('Name of Buggy', validators=[DataRequired()])
    BRider = StringField('Name of Rider')
    lastmodified  = DateTimeField('Date and Time', format='%Y-%m-%d %H:%M:%S')
    submit = SubmitField('Save')

要检查列表,请使用此代码

for buggy in buggies:
    print(buggy.BName)
还可以尝试将html更改为:

<p>{% for buggy in buggies %}
            {{ buggy['BName'] }}
        {% endfor %}</p>
{%用于四轮马车中的四轮马车%}
{{buggy['BName']}
{%endfor%}


似乎有一个jinja2例外。你能显示你的html文件吗?谢谢,上面、下面和上面的模型都给出了。谢谢。当你调用buggies=buggies.query.all()时,你能得到列表中的所有元素吗检查我的答案当我在bash的python3中运行Bggies.query.all()时,它说“buggies”没有定义。(这似乎是与数据库的连接问题,不过,在本问题中未显示的其他路径中,我可以成功地在web应用程序中创建和删除错误行,使其进出mysql数据库)更改html文件似乎有效,我将继续测试它!为什么改成['BName']会出于兴趣?此外,将顶级代码添加到init.py只会使站点崩溃。
class Buggies(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    BName = db.Column(db.String(100), nullable=False)
    BRider = db.Column(db.String(100), nullable=True)
    lastmodified = db.Column(db.DateTime, nullable=True, default=datetime.utcnow)

    def __repr__(self):
        return f"Buggies('{self.BName}', '{self.BRider}','{self.lastmodified}')"

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    description = db.Column(db.Text, nullable=False)
    status = db.Column(db.String(100), nullable=False)
    assigned_to = db.Column(db.String(100), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Post('{self.title}', '{self.date_posted}')"
class BuggyForm(FlaskForm):
    BName = StringField('Name of Buggy', validators=[DataRequired()])
    BRider = StringField('Name of Rider')
    lastmodified  = DateTimeField('Date and Time', format='%Y-%m-%d %H:%M:%S')
    submit = SubmitField('Save')
for buggy in buggies:
    print(buggy.BName)
<p>{% for buggy in buggies %}
            {{ buggy['BName'] }}
        {% endfor %}</p>