使用字典将广义插入到sqlalchemy中

我正在Flask中构建应用程序,并且定义了几个SQLAlchemy模型。我有一个字典,其中包含每种模型类型的键/值对。

我想使用字典进行广义插入…这是否需要映射器?我知道wtforms.ext.sqlalchemy.orm.model_form()会使用populate_obj(model)生成一个对象,因此这是可能的。我已经仔细阅读了文档,但找不到它。我可以稍后执行提交,但是现在需要快捷方式来填充对象。拜托,有人有专业知识吗?

from flask import Flask

from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)

db = SQLAlchemy()

db.init_app(app)

employee_data = {'firstname':'John','lastname':'Smith'}

project_data = {'name':'project1'}

dict_generalised_insert(model=Employee,dictionary=employee_data)

dict_generalised_insert(model=Project,dictionary=project_data)

def dict_generalised_insert(model=None,dictionary={})

obj = model.model()

obj.populate_obj(dictionary) # ???

return obj

class Employee(db.Model):

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

firstname = db.Column(db.String(80))

lastname = db.Column(db.String(80))

class Project(db.Model):

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

name = db.Column(db.String(80))

回答:

解开字典的惯用方式是使用双星运算符 **

配合使用flask-sqlalchemy

class Employee(db.Model)

id = db.Column(...)

firstname = db.Column(...)

lastname = db.Column(...)

employee_data = {'firstname':'John','lastname':'Smith'}

employee = Employee(**employee_data)

db.session.add(employee)

db.session.commit()

请注意,字典中的键必须与类的属性名称匹配。以这种方式打开包装与:

employee = Employee(firstname='John', lastname='Smith')

如果你__init__使用位置参数定义了一个(或其他方法),但是你也可以使用列表来执行此操作,但是你仅使用单个星号:

def __init__(self, firstname, lastname):

self.firstname = firstname

self.lastname = lastname

employee_data = ['John', 'Smith']

employee = Employee(*employee_data)

...

注意这里的值顺序很重要。

以上是 使用字典将广义插入到sqlalchemy中 的全部内容, 来源链接: utcz.com/qa/421547.html

回到顶部