数据库错误求助:Could not parse rfc1738 URL from string
解决SQLAlchemy的"Could not parse rfc1738 URL from string"错误
这个问题很常见,根源在于你给SQLAlchemy的数据库URI格式不符合它的要求。SQLite的连接URL需要带特定的协议前缀,直接写本地文件路径是不行的。
修正后的数据库配置代码
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///C:/dev/FlaskBlog/blog.db' db = SQLAlchemy(app) class Blogpost(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(50)) subtitle = db.Column(db.String(50)) author = db.Column(db.String(20)) date_posted = db.Column(db.DateTime) content = db.Column(db.Text)
为什么这样改?
SQLAlchemy要求所有数据库URL都遵循RFC1738标准,对于SQLite本地文件,必须以sqlite:///开头(三个斜杠),后面跟上你的文件绝对路径。你之前直接写C:/dev/FlaskBlog/blog.db,没有协议前缀,SQLAlchemy无法识别这是一个合法的数据库连接URL,所以抛出了解析错误。
如果你的blog.db文件放在项目根目录下,用相对路径会更方便,不需要写完整的绝对路径:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'
额外提醒
你的addpost路由逻辑本身没什么问题,但要确保在运行代码前已经通过db.create_all()创建了数据库表(可以在应用初始化的时候调用,比如在if __name__ == '__main__':块里执行),不然提交数据时会报表不存在的错误。
内容的提问来源于stack exchange,提问作者AlucardSama04
相关产品推荐
相关产品推荐

