栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is lock flask框架 试验sqlite

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is lock flask框架 试验sqlite

                                   flask框架    试验sqlite数据库中遇到的问题

项目如图:

已经创建了一个data.sqlite数据库

代码如下

from flask import Flask,  render_template, request
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
import os
from flask_sqlalchemy import SQLAlchemy

basedir = os.path.abspath(os.path.dirname(__file__))

app = Flask(__name__)
bootstrap = Bootstrap(app)

app.config['SECRET_KEY'] = 'hard to guess string'
app.config['SQLALCHEMY_DATAbase_URI'] ='sqlite:///' + os.path.join(basedir, 'data.sqlite')   # 示例 sqlite数据库的uri指定
# app.config['SQLALCHEMY_DATAbase_URI'] = 'mysql://root:root@127.0.0.1/scott'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)


# 创建两个类,也就是两个表
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    users = db.relationship('User', backref='role')  # 列表类型

    def __repr__(self):
        return '' % self.name


class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))    # 指定role_id是上一个类中role的id的外键

    def __repr__(self):
        return '' % self.username


db.create_all()  # create all tables

admin_role = Role(name='Admin')
mod_role = Role(name='Moderator')
user_role = Role(name='User')
user_john = User(username='john', role=admin_role)
user_susan = User(username='susan', role=user_role)
user_david = User(username='david', role=user_role)

db.session.add(admin_role)
db.session.add(mod_role)
db.session.add(user_role)
db.session.add(user_john)
db.session.add(user_susan)
db.session.add(user_david)
# db.session.add_all([admin_role, mod_role, user_role, user_john, user_susan, user_david])

db.session.commit()

解决方法:

1.删掉原先已经创建的数据库data.sqlite

2.弹出警告,可以将以下代码先注释掉再删除

        需要注释的代码:

app.config['SQLALCHEMY_DATAbase_URI'] ='sqlite:///' + os.path.join(basedir, 'data.sqlite')  

3.再次运行

4.我的代码运行后会弹出警告:

sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: roles.name
[SQL: INSERT INTO roles (name) VALUES (?)]
[parameters: ('Admin',)]

但是表已经创建好了!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339254.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号