problems with mysql db
Petr Messner
petr.messner at gmail.com
Mon Jun 29 09:32:40 EDT 2009
Hi,
use %s instead of %d in SQL statements, because (AFAIK) conversions
(including SQL escaping) from Python values to SQL values are done
before the % operator is called - that value is not a number by that
point.
I hope you understood it, sorry for my English :-) You can also check
MySQLdb module source, it's pretty clear.
PM
2009/6/29 golu <bhardwajjayesh7 at gmail.com>:
> here i have posted my code...plz tell why am i getting the error "int
> argument required" on the hash marked line(see below) although i am
> giving an int value
> #the code
> import os
> import string
> import MySQLdb
> import stopcheck
> conn = MySQLdb.connect(host='localhost',user='root',db='urdb')
>
> def file_extractor(dir_name):
> url_count = 0
>
> for file in os.listdir(dir_name):
> if(file[-4:] == '.txt'):
> file_path = os.path.join(dir_name,file)
> curse = conn.cursor()
> url_count += 1
> curse.execute("INSERT INTO URL_TABLE VALUES(%d,%s)",
> (url_count,file_path)) #error
> word_extractor(url_count,file_path)
> def word_extractor(url_count,file):
> fhandle = open(file)
> line = fhandle.readline()
> k=stopcheck.checker()
> k.create()
>
> while line:
> words = line.split()
> cursor = conn.cursor()
> for word1 in words:
> if word1 not in string.punctuation:
> if (k.check(word1) is 0) and (word1[0:4] != 'http') :
> word_count+=1
> try:
> cursor.execute("INSERT INTO word_table(id,word)
> VALUES(%d,%s)" , (word_count,word1))
> cursor.execute("INSERT INTO wordmatch
> (word_id,url_id) values(%d,%d)",(word_count,url_count))
> except MySQLdb.Error, e:
> print "Error %d: %s" % (e.args[0], e.args[1])
> line=fhandle.readline()
>
> if __name__ == '__main__':
> #url_count=0
> #word_count=0
>
> dir = os.path.join('D://','acm')
> file_extractor(dir)
> --
> http://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list