请教个 sqlalchemy 的查询方式,想把参数传递到执行语句上。。。
写了个函数去解决频发 query 操作:
#从数据库中检查物品名字,如果有,返回物品 ID def queryItemNameStrGetItemID(tblName,ItemName,engine,conn): tbl = Table(tblName, metadata,autoload=True,autoload_with=engine)#映射了 tblName 表 s = select([tbl.c.ItemID]).where(tbl.c.ItemName) == ItemName) res = conn.execute(s) #fetchall 结果只能一次有效 selectreSult = res.fetchall() #selectreSult 是一个 list if len(selectreSult) == 0:#如果没有内容 return None else: return (selectreSult[0])[0] 在程序上实现:
main: ResultDF = pd.DataFrame(************) engine = create_engine('mysql+pymysql://root:[email protected]:3306/test?charset=utf8') querycOnn= engine.connect() for i in ResultDF.itertuples():#对 A 列的物品进行历遍 tmpDFItemNameStr =i[ResultDF.columns.get_loc("A 列") + 1]#从 df 中获取 A 队物品名 tmpID = queryTeamNameStrgetTeamID('iteam_nick',tmpDFItemNameStr ,engine,queryconn)#找 ID if tmpID: todoSomethingFunc(tmpID) print(tmpID,':',tmpDFItemNameStr) queryconn.close() 问题是在函数里这句:
s = select([tbl.c.ItemID]).where(tbl.c.ItemName) == ItemName) 我想用把函数的参数作为表的字段名传入到这一句,是否可以做到?应该如何写?
select 这个语句的.c.后面的语句,似乎不可以 str 拼接方式完成...
s = select([tbl.c.AnyID]).where(tbl.c.AnyName) == ItemName)
如:
def queryItemNameStrGetItemID(tblName,ItemName,AnyID,AnyName,engine,conn): 这样传入?
