【问题标题】:MySQLdb Python QueryMySQLdb Python 查询
【发布时间】:2012-12-04 11:18:53
【问题描述】:

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

以下是 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,))

【问题讨论】:

  • 然后呢?错误?空结果?会发生什么?
  • @Cynical:空结果;来自 OP:我获取的唯一结果是 ()
  • 打印执行中的语句时会得到什么? ip_address 变量在这两种情况下是否具有相同的值?
  • 我在 MySQL Query 浏览器中尝试了相同的查询,结果很完美。但不是在python中。我将 ip_address 变量更改为 WHERE ip_address.address = '1.1.1.1'"。但仍然没有区别。也许如何表示 IP 地址有问题?
  • 或者我必须为这个查询使用不同的游标对象?我目前使用的是默认的。

标签: php python mysql mysql-python


【解决方案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)

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

【讨论】:

    猜你喜欢
    • 2010-12-03
    • 2018-01-02
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多