从文件中读取并将值作为参数传递给sql

时间:2012-10-07 16:16:08

标签: python mysql

当我输入

SELECT word from xyz WHERE number = '+12340008933';

进入phpmyadmin并运行它,我得到一个有效的查询输出。

然而,当我从文件中读取数字时,它不会返回任何内容。例如

base_dir = "/home/jayjay/Desktop/scripts/"

filehandle = open(base_dir+"inputFile.txt",'r')
for number in filehandle.readlines():
    sql = "SELECT word from xyz WHERE number = '%s';"%number
    cursor.execute(sql)
    rows = cursor.fetchall()
    for row in rows:
        print row[0]

这不会返回任何内容。一点都不我已经从Unix2dos转换了输入文件,反之亦然,假设输入文件可能有问题

1 个答案:

答案 0 :(得分:2)

您应该使用参数化的SQL语句而不是字符串替换,这很容易进行SQL注入。此外,您可能需要删除从文件读取的值周围的任何空格。请尝试以下方法:

base_dir = "/home/jayjay/Desktop/scripts/"

filehandle = open(base_dir+"inputFile.txt",'r')
for number in filehandle.readlines():
    sql = "SELECT word from xyz WHERE number = %s"
    cursor.execute(sql, (number.strip(),))
    rows = cursor.fetchall()
    for row in rows:
        print row[0]