簡體   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