python - 我在哪里可以找到利用 SQLite 创建列的 Python 代码片段?
问题描述
我正在开发一个使用常见烧瓶实践的小型个人项目,例如用户管理和内容限制,我想创建一个新列,在我的 SQLite 数据库中提供用户角色,该数据库由 python 脚本生成。具体来说,我想将这个角色user
赋予每个新的注册表。我在哪里可以找到这样的例子或解决方案?
我尝试过使用类的解决方案,但我认为我弄错了,或者我没有完全掌握它。
更具体地说,我尝试了它,但出现以下错误
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: user.role
[SQL: SELECT user.id AS user_id, user.username AS user_username, user.password AS user_password, user.email AS user_email, user.role AS user_role
FROM user
WHERE user.username IN (?)
LIMIT ? OFFSET ?]
[parameters: ('a', 1, 0)]
class User(Base):
__tablename__ = "user"
id = Column(Integer, primary_key=True)
username = Column(String(30), unique=True)
password = Column(String(30))
email = Column(String(50))
role = Column(String(50))
def __repr__(self):
return '<User %r>' % self.username
解决方案
在您的 init.py 文件中,您应该这样做:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
db.init_app(app)
db.app = app
from .models import User
db.create_all()
.models
是您的模型所在的 .py 文件,请User
记住调用
from .models import User
db.create_all()
在您已经创建应用程序并设置数据库之后:
app = Flask(__name__)
db.init_app(app)
db.app = app
否则你会得到一个异常,这是可以理解的,在你创建应用程序和数据库本身之前你不能在数据库上工作。
上面的解决方案是如果您从头开始创建项目,如果您有正在进行的项目并且您只需要添加一个表或更新现有的,解决方案是:https ://flask-migrate.readthedocs.io/ zh/最新/
推荐阅读
- airflow - 气流 > S3 连接在工作人员上失败
- python - 在张量流中将密集向量乘以稀疏矩阵
- java - Java 程序未进入 if 语句
- c++ - c++,我正在制作一个程序来计算一个字母在文件中出现的次数
- alloy - 找不到名称“div”...嗯?为什么?
- django - 更改最终用户的 postgres 密码
- python - 将 PyCharm 交互式 shell 中的最后一个命令移动到脚本
- acumatica - 折扣百分比或价格的一般查询
- google-sheets-api - 来自 Ruby 的 Google Sheets_V4 API:如何获取命名范围的_spreadsheet_values
- optaplanner - optaplanner 结果均匀分布