繁体   English   中英

利用DBI模块将Perl代码与MySQLdb转换为python

[英]Translating a perl code, utilising the DBI module, to python with MySQLdb

我几乎没有python经验,并且对perl的知识为零,但是我需要将连接到MySQL服务器的perl代码转换为python。

在perl子例程中,执行标准连接操作后,出现的代码为:

my @tmp = @{$dbh->selectall_arrayref( $sql )};

my @types;
foreach my $t (@tmp) {
push @types, @$t[0];
}

return @types;

其中$ sql是MySQL选择查询。 我在python函数中要做的是:

cursor = conn.cursor()
cursor.execute( sql )
tmp = cursor.fetchall()
types = list( len( tmp ) )
for item in tmp :
    types.append( item[0] )

return types

我的问题是@ $ t [0]包含什么,是否等同于tmp中的item [0]?

谢谢!

您应该能够运行代码来发现等效性,但是是的,这两件事是等效的。

在perl示例中导致语法奇怪的是,perl在早期就对标量,数组和哈希进行了非常严格的分离,而数组和哈希只能将标量作为其存储值。 通过在perl中添加引用(它们是指向数组和哈希的标量),可以很快改善这一点,但是语法已经设置了这种分隔,因此必须在语言中添加其他操作。

结果,第一行正在对数组引用的数组进行引用,并取消对外部引用的引用,因此它现在是数组引用的数组。 然后,它遍历其中的所有那些引用,对它们取消引用,并获取数组中的第一个元素。 因为@$t[0]通常看起来很奇怪,所以您会看到它写为$t->[0] ,这不需要您知道数组取消引用运算符( @ )的绑定比元素访问运算符( [0] )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM