首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQLAlchemy / SQLite如何使用Python / Flask创建表并在其中存储数据

SQLAlchemy / SQLite如何使用Python / Flask创建表并在其中存储数据
EN

Stack Overflow用户
提问于 2020-09-04 17:49:56
回答 1查看 315关注 0票数 0

您好,我正在尝试在sqlite db中创建一个表,我应该在其中存储用户和密码。表的创建是正确的(我使用sqlite命令进行了检查),但是当尝试存储用户和pwd时,它会返回一个错误,指出pwd列表不存在,而我进行了检查,结果确实存在!!我一定是在我的python代码中遗漏了什么,你能帮帮我吗?我想我可能在创建表时做错了什么(如您在代码中所见),我使用元数据()并将引擎传递给create_all,但当我定义User类时,我使用db.Model,然后使用db.Column(db.String)定义列,我认为这可能是因为当我创建表时,没有对db的引用。?我附上了我所做的代码的截图。https://i.stack.imgur.com/LMwhO.jpg

Sqlite验证:https://i.stack.imgur.com/X7P6v.png

代码类用户:

代码语言:javascript
运行
复制
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data-users.sqlite'

engine= create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
bcrypt = Bcrypt(app)
db = SQLAlchemy(app)

#CREATE TABLE
meta=MetaData()
userstable = Table('user', meta, \
    Column('id', Integer, primary_key = True, autoincrement=True), \
    Column('username', String, unique = True), \
    Column('pwd', String))
meta.create_all(engine)

class User(db.Model):

    __tablename__ = "user"
    id = db.Column(db.Integer(), primary_key = True, autoincrement=True)
    username = db.Column(db.String(64), unique = True)
    pwd = db.Column(db.String(64)) 

    def __init__(self,id,username,pwd):
        self.id=id
        self.username = username
        self.pwd = bcrypt.generate_password_hash(pwd)

下面是我尝试存储用户和pwd的方法,它应该在表中添加一个新行

代码语言:javascript
运行
复制
        from store_user_db import User, db
        
        DICP_FTP_DESTINATION_PSW=self.submit_pwd()
        db.create_all()
        user = User(id=001,username="ita_itf", pwd=DICP_FTP_DESTINATION_PSW)
        db.session.add(user)
        db.session.commit()

错误:

代码语言:javascript
运行
复制
OperationalError: (sqlite3.OperationalError) table user has no column named pwd
[SQL: INSERT INTO user (id, username, pwd) VALUES (?, ?, ?)]
[parameters: (1, 'ita_itf', 'xxx')]
EN

回答 1

Stack Overflow用户

发布于 2020-09-04 17:59:25

打开终端并启动交互式Python shell,然后键入以下内容:

代码语言:javascript
运行
复制
from name import db
db.create_all()

其中name是您的项目的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63738786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档