首页 > 解决方案 > 从变量sqlite python3 sqlalchemy中获取列名

问题描述

我想使用烧瓶 sqlalchemy 将存储在x变量中的详细信息存储到 sqlite 数据库中。如何使它成为可能。

这是我写的代码:

from flask import Flask
from flask_httpauth import HTTPBasicAuth
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/u.db'
db = SQLAlchemy(app)

class User(db.Model) :
    x = ['username = "sam"', 'password = "sam123"']
    u1 = (x[0].split()[0])
    p1 = (x[1].split()[0])
    print(u1,p1)
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key = True)
    u1 = db.Column(db.String(32), index = True)
    p1 = db.Column(db.String(128))

if __name__ == '__main__':
    db.create_all()
    print("db created")
    app.run(host='0.0.0.0', port=5001)

在 sqlite 中创建的表:

id   u1  p1

在 sqlite 中创建所需的表和要加载的数据:

id username password
1  sam      sam123

标签: pythonpython-3.xsqliteflaskflask-sqlalchemy

解决方案


您的表需要使用您想要的名称定义列:

class User(db.Model) :

    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(32), index = True)
    password = db.Column(db.String(128))

您可以使用函数从以下位置提取用户名和密码x

def get_user_data(data):
    user_data = []
    for item in data:
        part = item.partition(' = ')[2]
        cleaned = part.replace('"', '')
        user_data.append(cleaned)
    return user_data

并创建一个User这样的实例:

username, password = get_user_data(x)
user = User(username=username, password=password)

推荐阅读