2012-12-17 51 views
0

我正在尝试将SQL查询从PHP转换为MySQLdb for Python。MySQLdb Python查询

以下是PHP代码:

$query = " 
     select 
      `ip_address`.`address`, 
      `interface`.`name`, 
      `equipment`.`dns_hostname`,`interface`.`vrf_id` 
     from 
      `equipment` `equipment` 
       inner join `tm_se_equipment` `tm_se_equipment` 
       on `equipment`.`id` = `tm_se_equipment`.`equipment_id` 
        inner join `interface` `interface` 
        on `interface`.`equipment_id` = `equipment`.`id` 
         inner join `ip_address` `ip_address` 
         on `ip_address`.`if_id` = `interface`.`id` 
     where 
      (`ip_address`.`address` = '$ip_address') 
    "; 

我试图像这样翻译,但它没有工作,我获取唯一的结果就是()

ip_address = ipaddr.IPAddress(linknet) 
linknet = "1.1.1.1" 

cursor.execute("""SELECT `ip_address`.`address`, `interface`.`name`, `equipment`.`dns_hostname`, `interface`.`vrf_id` FROM `equipment` `equipment` INNER JOIN `tm_se_equipment` `tm_se_equipment` ON `equipment`.`id` = `tm_se_equipment`.`equipment_id` INNER JOIN `interface` `interface` ON `interface`.`equipment_id` = `equipment`.`id` INNER JOIN `ip_address` `ip_address` ON `ip_address`.`if_id` = `interface`.`id` WHERE `ip_address`.`address` = %s""", (ip_address,)) 
+0

而且?错误?空结果?怎么了? – Cynical

+0

@Cynical:空结果;从OP:*我得到的唯一结果是'()'* –

+0

对不起,没有看到它 – Cynical

回答

0

试试这个:

cursor.execute("""SELECT `ip_address`.`address`, `interface`.`name`, `equipment`.`dns_hostname`, `interface`.`vrf_id` FROM `equipment` `equipment` INNER JOIN `tm_se_equipment` `tm_se_equipment` ON `equipment`.`id` = `tm_se_equipment`.`equipment_id` INNER JOIN `interface` `interface` ON `interface`.`equipment_id` = `equipment`.`id` INNER JOIN `ip_address` `ip_address` ON `ip_address`.`if_id` = `interface`.`id` WHERE `ip_address`.`address` = '%s'""" % ip_address) 

或者如果你试图将ip地址作为参数来执行函数,你需要使用“?”而不是“%”