私のプログラムは終了していないようです...私は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()
- 私のエラーはどこですか?
- 自分のコードが何をしているのかを知るにはどうすればよいですか? 具体的には、プログラムが実行しているコードの行を尋ねてもよろしいですか?
すべてのヘルプは大歓迎です。私のコードをより Pythonic にするための提案をお気軽に!