MySQL查询的多行结果保存为数组结构
我有一段Python代码:
self.lock_tables("read", ['nets_permissions as n', 'devices_permissions as d'])
usrs = self.db.get("SELECT n.user_id FROM nets_permissions as n \
left join devices_permissions as d \
on n.user_id = d.user_id \
where d.user_id is null \
and n.network_id=%s and n.perm<>3", netid)
self.unlock_tables()
for usr in usrs:
self.lock_tables("write", ['devices_permissions'])
self.db.execute("INSERT devices_permissions SET \
user_id=%s, network_id=%s, device_id=%s, perm=%s",\
usr, netid, sensid, perm)
self.unlock_tables();
我首先查询两个表,想要获取一些用户ID。我想把这些用户ID保存在一个变量里,然后再用一个循环把这些记录插入到另一个表中……
但是这段代码不管用。我遇到了这个错误:
异常:Database.get() 查询返回了多行数据
我该如何获取这些多行数据,然后一次性处理它们呢?
谢谢大家。
1 个回答
0
解决办法是用 self.db.query 代替 self.db.get!
self.lock_tables("read", ['nets_permissions as n', 'devices_permissions as d'])
usrs = self.db.query("SELECT n.user_id FROM nets_permissions as n \
left join devices_permissions as d \
on n.user_id = d.user_id \
where d.user_id is null \
and n.network_id=%s and n.perm<>3", netid)
self.unlock_tables()
for usr in usrs:
self.lock_tables("write", ['devices_permissions'])
self.db.execute("INSERT devices_permissions SET \
user_id=%s, network_id=%s, device_id=%s, perm=%s",\
usr['user_id'], netid, sensid, perm)
self.unlock_tables();