在文档中,创建要插入的行的方式是这样写的:
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()
。
答案 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"))
注意,元组的每一列都应有一个条目。您可以详细说明用例吗?