【问题标题】:SQLAlchemy / SQLite How to create table and then store data in it with Python / FlaskSQLAlchemy / SQLite 如何创建表,然后使用 Python / Flask 在其中存储数据
【发布时间】:2020-12-23 14:03:36
【问题描述】:

您好,我正在尝试在 sqlite 数据库中创建一个表,我应该在其中存储用户和密码。 该表已正确创建(我使用 sqlite 命令进行了检查),但是当尝试存储用户和 pwd 时,它返回一个错误,指出 pwd 列表不存在,而我检查它确实存在! 我的python代码中一定遗漏了一些东西,你能帮忙吗? 我想我可能在创建表时做错了(正如您在代码中看到的那样)我使用 Metadata() 并将引擎传递给 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

代码类用户:

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)

这是我尝试存储用户和密码的方式,它应该在表格中添加一个新行

        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()

错误:

OperationalError: (sqlite3.OperationalError) table user has no column named pwd
[SQL: INSERT INTO user (id, username, pwd) VALUES (?, ?, ?)]
[parameters: (1, 'ita_itf', 'xxx')]

【问题讨论】:

    标签: python sqlite flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

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

    from name import db
    db.create_all()
    

    name 是您的项目的名称。

    【讨论】:

    • 看看我的代码,我已经这样做了,也许会话有问题?我不知道我要疯了
    猜你喜欢
    • 2020-12-26
    • 2020-12-21
    • 2015-06-06
    • 1970-01-01
    • 2020-02-22
    • 2019-09-15
    • 1970-01-01
    • 2014-10-15
    相关资源
    最近更新 更多