Jim Gallacher
jg.lists at sympatico.ca
Sat Sep 17 17:42:25 EDT 2005
Ed Hotchkiss wrote: > Hmm ... Actually, now that I use it with a much longer file (the past > file was like 6 links), this file is several hundred. I get this error now: > > >>> > Traceback (most recent call last): > File "G:\Python\myCode\Links Database\addfromtext2.py", line 30, in ? > cursor.execute (""" > IndexError: list index out of range > >>> > > I'm guessing that it has something to do with the primary index, "ID"? I > tried auto increment, but no go with that too, same error ... More likely one of the lines in sites.txt has fewer than 3 fields. Try running the following: inp = open ("sites1.txt","r") for line in inp.readlines(): links = map(str, line.split(",")) print links[0], links[1], links[2] It will like generate the same error. You may want to consider using the python csv module rather than split. Jim > > On 9/17/05, *Ed Hotchkiss* <edhotchkiss at gmail.com > <mailto:edhotchkiss at gmail.com>> wrote: > > > Thanks alot! I guess I don't even need arr (why did I have it there, > no idea -) > The only thing I was wondering (the code is awesome, but I love to > learn :P ) > > Is UID a placeholder the ID? How do I have it automatically > increment .. and is that a better idea, to autoincrement? > > Thanks again. It feels good to migrate completely to linux now, and > transfer all of my access files to csv, then into mysql. > > > uid = 0 > inp = open ("sites1.txt","r") > for line in inp.readlines(): > uid += 1 > links = map(str, line.split(",")) > cursor.execute (""" > INSERT INTO links (ID, Name, URL, Category) > VALUES (%d, "%s", "%s", "%s")""" % \ > (uid, links[0], links[1], links[2]) > ) > > ---- > Also, what is the \ for after the % sign to the right of VALUES? thanks. > -edward > > > > > > > On 9/17/05, *Eric Walstad* <eric at ericwalstad.com > <mailto:eric at ericwalstad.com>> wrote: > > On Saturday 17 September 2005 12:40 pm, Ed Hotchkiss wrote: > [snip] >> stmt = """CREATE TABLE links ( >> ID INT NOT NULL, >> Name TEXT, >> URL LONGTEXT, >> Category LONGTEXT, >> primary key (ID) >> )""" >> cursor.execute(stmt) >> >> >> arr=[] >> inp = open ("sites1.txt","r") >> #read line into array > >> for line in inp.readlines(): >> links = map(str, line.split(",")) >> arr.append(links) >> cursor.execute (""" >> INSERT INTO links (Name, URL, category) >> VALUES (%s, %s, %s)""" % tuple(links[0:3]) >> ) >> cursor.close() >> conn.close() > > Perhaps this is a bit naive but would this do it for you (you didn't > say what error(s) you are getting)? > > uid = 0 > for line in inp.readlines(): > uid += 1 > links = map(str, line.split(",")) > arr.append(links) > cursor.execute (""" > INSERT INTO links (ID, Name, URL, Category) > VALUES (%d, "%s", "%s", "%s")""" % \ > (uid, links[0], links[1], links[2]) > ) > > The differences are: > - Your table def doesn't specify an auto-incrementing id and won't > allow null values so we need to insert a number. > - Quotes around the string data. I this might not be needed. I'm > not sure if MySQLdb does it for you. > - I think MySQL is sensitive to case, so I changed 'category' to > 'Category'. > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org <mailto:Mod_python at modpython.org> > http://mailman.modpython.org/mailman/listinfo/mod_python > <http://mailman.modpython.org/mailman/listinfo/mod_python> > > > > > -- > edward hotchkiss > > > > > -- > edward hotchkiss > > > ------------------------------------------------------------------------ > > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python
|