0

私のプログラムは終了していないようです...私はPythonに比較的慣れていないので、まだ見ていないよくある間違いを犯したのではないかと思います。最近でもJavaで、ファイルを閉じることでこのような単純な問題を解決しました...

注: rt_table約 250,000 行あります。この python プログラムの前に、同等の Java プログラムを書いていましたが、実行にそれほど時間はかかりませんでした。

def create_AMatrix():
    """Create the adjacency table of the retweet network from rt_table to create an adjacency matrix"""
    con = mdb.connect(host="localhost", user="root", passwd="", db="twitter")    
    cur = con.cursor(mdb.cursors.DictCursor)
    #get vertex set of users in retweet network
    cur.execute("select user_id from users")
    rows = cur.fetchall()
    vSet = list()
    for uID in rows:
        vSet.append(uID)

    #populate adjacency table
    cur.execute("select * from rt_table")
    rows = cur.fetchall()
    for row in rows:
        sourceUserID = row["source_user_id"]
        sourceUserName = row["source_user_name"]
        rtUserID = row["rt_user_id"]
        rtUserName = row["rt_user_name"]
        try:
            curRow = vSet.index(sourceUserID)
            curCol = vSet.index(rtUserID)
        except ValueError:
            continue
        cur.execute("select COUNT(*) from adjacency where r = %s and c = %s", (curRow, curCol))
        if cur.fetchone()['COUNT(*)'] == 0:
            try:
                cur.execute("insert into adjacency (r, c, val, source_user_id, source_user_name, rt_user_id, rt_user_name) values (%d, %d, %d, %d, %s, %d, %s"), (curRow, curCol, 1, sourceUserID, sourceUserName, rtUserID, rtUserName)
                con.commit()
            except:
                con.rollback()
        else:
            try:
                cur.execute("update adjacency set val = val+1 where r = %d and c = %d"), (curRow, curCol)
                con.commit()
            except:
                con.rollback()
    cur.close()
    con.close()
  1. 私のエラーはどこですか?
  2. 自分のコードが何をしているのかを知るにはどうすればよいですか? 具体的には、プログラムが実行しているコードの行を尋ねてもよろしいですか?

すべてのヘルプは大歓迎です。私のコードをより Pythonic にするための提案をお気軽に!

4

1 に答える 1