我无法按照flask教程创建数据库:https://www.youtube.com/watch?v=cywidiiuxqc&list=pl-osie80tets4ujlw5mm6ojgkjfeuxcyh&index=4
我没有找到解决这个问题的办法。请帮帮忙。
当我尝试在从项目导入数据库后运行db.create_all()
时,我得到
SqlAlchemy.exc.OperationalError:(Sqlite3.OperationalError)无法打开数据库文件
Python 3.8.3
from datetime import datetime
from flask import Flask, render_template, url_for, flash, redirect
from flask_sqlalchemy import SQLAlchemy
from forms import RegistrationForm, LoginForm
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
password = db.Column(db.String(60), nullable=False)
posts = db.relationship('Post', backref='author', lazy=True)
def __repr__(self):
return f"User('{self.username}', '{self.email}', '{self.image_file}')"
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)
content = db.Column(db.Text, 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}')"
错误:
db.create_all()跟踪(最近一次调用):文件“/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/engine/base.py”,第2339行,在_wrap_pool_connecthtml" target="_blank">返回fn()文件“/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/pool/base.py”,在connect返回_connectionfairy._checkout(asksite/lib/python3.8/site-packages/sqlalchemy/pool/base.py“,第440行,在init self.__connect(First_connect_check=true)文件”/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/pool/base.py“,第661行,在connect pool.logger.debug(”connect()错误:%s“,e)文件”nnect return self.dbapi.connect(*cargs,**cparams)sqlite3.operationalerror:无法打开数据库文件
上述例外是下列例外的直接原因:
回溯(最近一次调用):文件“”,第1行,在文件“/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/flask_sqlalchemy/init.py”,第1039行,在create_all self._execute_for_all_tables(app,bind,'create_all')文件“/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/flask_sqlalchemy/init.pylf._contextual_connect()作为connn:文件“/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/engine/base.py”,第2305行,in_contextual_connect(self.pool.connect,None);文件“/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/engine/base.py”,第2342行/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/pool/base.py“,第778行,in_checkout fairy=_connectionrecord.checkout(pool)文件”/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/pool/base.py“,第495行,incheckout rec=pool._do_get()文件”Lalchemy/util/langhelpers.py“,第68行,在exit compat.raise中(文件”/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/util/compat.py“,第178行,在raise中引发异常文件”/home/kbyrd/anaconda3/envs/flasksite/lib/python3.8/site-packages/sqlalchemy/base.py“,第656行,在__connect connection=
参考Miguel的精彩工作https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database。也许您需要让应用程序知道basedir路径?注:他使用app.db而不是site.db。
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
# ...
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
然后用
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
from app import routes, models
希望这能有一点帮助。
我正在尝试从AWS控制台在ECS Fargate环境中启动测试任务,但每次尝试启动时,都会出现以下错误: 执行角色创建AmazoneCaskExecutionRole失败 我认为这是权限错误,所以我要求帐户所有者(我是另一个帐户的IAM用户)给我它们,现在我这样做了,但仍然不起作用。 我目前的ECS权限是: AmazonECS\u FullAccess 亚马逊执行角色政策 最糟糕的是,AWS没有提
用户 角色 Application.Properties
我对JAVA web应用程序非常陌生,所以请记住这一点。我承担了一个非常大的项目,令人望而生畏。我终于修复了Maven依赖,现在在Tomcat上运行时遇到了第一个错误。 包含eu.digient.billfold.goshgame.game.level.ItemConfigFactoryImpl模块的Spring配置:
MySQL说:文档 1064年的今天,您的SQL语法出现错误;查看与您的MariaDB服务器版本对应的手册,了解第2行“@id INT AS BEGIN SET NO COUNT ON”附近使用的正确语法
代码: 导致"ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()” 有什么问题?
问题内容: 我将我的MySQL数据库插入WAMP服务器时遇到了麻烦。我打算发布模式的图像,但这是我不能的第一篇文章。 下面是执行的脚本。 但是然后我得到这个错误: 我不知道为什么。谁能帮我? 问题答案: 我迅速搜寻了你,它把我带到了这里。我引用: 如果您尝试添加名称已经在其他地方使用的约束,则会收到此消息 要检查约束,请使用以下SQL查询: 在此处查找更多信息,或尝试查看错误发生的位置。看起来像是