【发布时间】:2020-12-23 19:40:58
【问题描述】:
我的模型有问题吗?你有什么异常吗?尝试使用 SQLAlchemy 将用户和密码存储到 SQLite db 但返回错误,指出用户表中的列 pwd 不存在,实际上,如果我检查 sqlite> .schema 它返回具有正确结构和 pwd 列的表,不如果我查询,里面的数据。
我首先用 Table() 函数创建表,然后在我定义 User 类,可能是因为在类中没有对表的列名的引用?但我已经导入了 tablename="user" 所以它不应该工作吗?
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from sqlalchemy import *
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data-users.sqlite'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer(), primary_key = True, autoincrement=True)
username = db.Column(db.String(64), unique = True)
pwd = db.Column(db.String())
def __repr__(self):
return '<User %r>' % self.username
这里我将用户数据存储在表中
from store_user_db import User, db
db.create_all()
DICP_FTP_DESTINATION_PSW=self.submit_pwd()
user = User(id=001,username="ita_itf",pwd=DICP_FTP_DESTINATION_PSW)
db.session.add(user)
db.session.commit()
这是错误:
sqlalchemy.exc.OperationalError
OperationalError: (sqlite3.OperationalError) table user has no column named pwd
[SQL: INSERT INTO user (id, username, pwd) VALUES (?, ?, ?)]
[parameters: (1, 'ita_itf', <read-only buffer for 0x7efe495709f0, size -1, offset 0 at 0x7efe500c3830>)]
【问题讨论】:
-
也许我应该参考表名而不是指数据库?像 userstable.Column(...) 而不是 db.Column(...) ??
标签: python sqlite flask sqlalchemy flask-sqlalchemy