pypyodbc查询返回不正确的数据

时间:2019-02-08 12:07:25

标签: python-3.x pyodbc sql-server-2017 pypyodbc

嗨,好奇怪,我正在运行的sql查询是 SELECT [idPerson] FROM tblPersons WHERE [Email] LIKE 'Joe.Pike%'

如果我在服务器上运行它,我会得到正确的personID,但是当我在代码中运行它时,我会得到一个不存在的随机personID,现在更奇怪的是,我基于第二个代码查询personID并返回一个值

    UserName = row[1]+'.'+row[2]
    Password = 'XXXXXXXX'
    Email = UserName + '@XXXXXXX.org.uk'

    emaillike = [str(row[1]+'.'+row[2]).replace("'", '')+"%"]

    sql = ("""SELECT [idPerson] FROM tblPersons WHERE [Email] LIKE {}""").format(str(emaillike).replace("[","").replace("]",""))
    PersonId = cursor.execute(sql).fetchone()

    PersonPin = \
        str(cursor.execute('SELECT [Pin] FROM tblPersonPins WHERE [PersonId] = ?'
                       , [PersonId[0]]).fetchone()).replace("'","").replace("(","").replace(")","").replace(",","")

    print(sql)
    print(emaillike)
    print(str(PersonId))
    print(PersonPin)

我什至尝试使用Email LIKE查询来获取所有行,但仍然仅返回一个ID,即不存在的105524值

SQL服务器是MSSQL Server 2017,并且正在运行Python 3.7.2 pyodbc和pypyodbc似乎也有问题

我的打印语句返回:

SELECT [idPerson] FROM tblPersons WHERE [Email] LIKE 'Joe.Pike%' ['Joe.Pike%'] (105524,) 7271

但是数字应该都不同,并且再次确认我在sql server developer中运行打印的sql语句时,它将返回正确的数据。

预先感谢

PS,这是未完成的代码,因此请忽略可怕的格式(我也知道我不应该对SQL查询使用位置参数,但是我看不到任何其他方式来获得最终结果)

1 个答案:

答案 0 :(得分:0)

天哪,请射杀我!

数据库不正确,老兄,我希望我可以删除问题