0

我想测试我的 MySQL 数据库以及它如何处理我未来的数据。它只是一个有两列的表,其中一列只有一个单词,另一列是 30.000 个字符。所以我复制并插入同一个表 20.000 次,显示大小为 2.0 GB。现在我想通过 phpMyAdmin 浏览它们,它什么也没有显示,并且每个都破坏了该表以显示任何内容。我通过 python 输出它只显示在此副本之前插入的 5 行。我使用脚本从 5000 - 10.000 之间的 ID 中删除行,它可以工作。这意味着数据在那里,但没有出来。有什么解释吗?

    import MySQLdb as mdb        
con = mdb.connect('127.0.0.1', 'root','password', 'database')
title = []
entry = []
y = 0
with con:            
    conn = con.cursor()

    conn.execute("SELECT * FROM mydatabase WHERE id='2' AND myword = 'jungleboy'")
    rows = conn.fetchall()    
    for i in rows:
         title.append(i[1])
         entry.append(i[2])

    for x in range(20000):
        cur.execute("INSERT INTO mydatabase(myword,explanation) VALUES (%s,%s)",(str(title[0]),str(entry[0])))
        if x > y+50:
            print str(x)
            y = x
4

1 回答 1

3

我不确定我是否理解您的问题,但这里有一些关于您粘贴的代码的提示。

INSERT在添加、删除或更改表中的数据的任何或其他查询之后,您需要使用con.commit().

可以使用 获取多少记录是有限制的fetchall()。您可以通过打印arraysize光标的属性来查看和调整此限制:

print 'I can only fetch {0.arraysize} rows at a time.'.format(cur)

为保证您获取每一行,循环遍历结果,如下所示:

q = "SELECT .... " # some query that returns a lot of results
conn.execute(q)
rows = con.fetchone() # or fetchall()

while rows:
   print rows
   rows = con.fetchone() # again, or fetchall()
于 2013-03-03T05:14:14.303 回答