sqlalchemy创建没有命名关键字的插入对象

时间:2018-08-22 12:25:46

标签: python python-2.7 sqlalchemy

在文档中,创建要插入的行的方式是这样写的:

PartialEq<T>

现在假设我在列表中有该行,并且我想在没有命名关键字的情况下创建此对象?这样的事情(它从列表中的位置获取正确的列):

insert_obj = MyTable(column1="a", column2="b")

我的用例:

row = ["a", "b"]
insert_obj = MyTable(row)

我想摆脱循环中的命名关键字。

解决方案是使用engine = create_engine('sqlite:///database/test.db') engine.connect() Base = automap_base() Base.prepare(engine, reflect=True) session = Session(bind=engine) df = pd.read_csv("../test.csv", sep=';') Articles = Base.classes.articles inserts = [] for index, row in df.iterrows(): insert.append(Articles(article_id=row[0], article_name=row[1])) session.add_all(inserts) session.commit()

1 个答案:

答案 0 :(得分:1)

来自sql_alchemy文档:

http://docs.sqlalchemy.org/en/latest/core/dml.html#sqlalchemy.sql.expression.Insert.values

  

对于任何一种形式,但更典型地对于Insert构造,也都接受一个元组,该元组包含表中每个列的条目:

MyTable.__table__.insert().values(("a", "b"))

注意,元组的每一列都应有一个条目。您可以详细说明用例吗?