为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 SQLite / SQLAlchemy 创建数据库表?

如何使用 SQLite / SQLAlchemy 创建数据库表?

白衣染霜花 2023-07-11 14:06:11
我正在尝试使用 SQLAlchemy/SQLite 在现有数据库中创建一个表,我必须在其中存储用户和密码,但它返回一个错误,指出列 pwd 不存在!我错过了什么吗?我把事情搞砸了吗?我仍然不太明白,我按照一些在线教程中的所有步骤进行操作,但仍然没有任何结果。这是我开发的类对象,然后从另一个寄存器表单我尝试存储应用程序中的密码,但错误应该在此代码中:import osbasedir = os.path.abspath(os.path.dirname(__file__))# flask importsfrom flask import Flask from flask_sqlalchemy import SQLAlchemyfrom flask_bcrypt import Bcryptfrom sqlalchemy import *# create flask appapp = Flask(__name__)# set sqllite db connectionapp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')engine= create_engine(app.config['SQLALCHEMY_DATABASE_URI'])# bcrypt extension init to appbcrypt = Bcrypt(app)# sqlite init to appdb = SQLAlchemy(app) # define meta data for tablemeta=MetaData()userstable = Table('users', meta, Column('id', Integer, primary_key = True, autoincrement=True), Column('username', String, unique=True), Column('pwd', String))# create table to sqlite meta.create_all(engine)class User(db.Model):    # user columns    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)    username = db.Column(db.String(64), unique=True)    pwd = db.Column(db.String(128))     def __init__(self,username,pwd):        #self.id=id        self.username=username        self.pwd=bcrypt.generate_password_hash(pwd)# create user objectuser = User('anish','23434')# insert user object to sqlitedb.session.add(user)# commit transactiondb.session.commit()这是错误:sqlalchemy.exc.OperationalError 操作错误:(sqlite3.OperationalError) 表用户没有名为 pwd 的列 [SQL: INSERT INTO user (username, pwd) VALUES (?, ?)] [参数:('ita_itf', '$2b$12$ VmpTsd0o4uTLj0wGypGu7ujhzYHLlV8k9ekaIP1.yh5lUMMgOM4MC')]
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

import os

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


# flask imports

from flask import Flask 

from flask_sqlalchemy import SQLAlchemy

from flask_bcrypt import Bcrypt

from sqlalchemy import *


# create flask app

app = Flask(__name__)

# set sqllite db connection

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

engine= create_engine(app.config['SQLALCHEMY_DATABASE_URI'])

# bcrypt extension init to app

bcrypt = Bcrypt(app)


# sqlite init to app

db = SQLAlchemy(app)

 

# define meta data for table

meta=MetaData()

userstable = Table('users', meta, Column('id', Integer, primary_key = True, autoincrement=True), Column('username', String, unique=True), Column('pwd', String))


# create table to sqlite 

meta.create_all(engine)


class User(db.Model):

    # table name for User model

    __tablename__ = "users"


    # user columns

    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)

    username = db.Column(db.String(64), unique=True)

    pwd = db.Column(db.String(128))

 

    def __init__(self,username,pwd):

        #self.id=id

        self.username=username

        self.pwd=bcrypt.generate_password_hash(pwd)


# create user object

user = User('anish','23434')

# insert user object to sqlite

db.session.add(user)

# commit transaction

db.session.commit()


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信