Привет, так немного странно, я запускаю SQL-запрос SELECT [idPerson] FROM tblPersons WHERE [Email] LIKE 'Joe.Pike%'
Если я запускаю это на сервере, я получаю свой правильный идентификатор человека, однако, когда я запускаю его в своем коде, я получаю случайный идентификатор человека, которого не существует, теперь еще более странно то, что мой второй бит кода запрашивает на основе идентификатора человека и который возвращает значение
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)
Я даже пытался получить строки с помощью запроса электронной почты LIKE, но он все равно возвращал только один идентификатор, и это несуществующее значение 105524.
Сервер sql - это сервер MSSQL 2017, и я использую Python 3.7.2. Это также похоже на проблему с pyodbc, а также с pypyodbc.
Мои операторы печати возвращают:
SELECT [idPerson] FROM tblPersons WHERE [Email] LIKE 'Joe.Pike%'
['Joe.Pike%']
(105524,)
7271
Но числа должны быть разными и еще раз подтверждать, что когда я запускаю распечатанный оператор sql в разработчике сервера sql, он возвращает правильные данные.
заранее спасибо
P.S. Это незаконченный код, поэтому, пожалуйста, не обращайте внимания на ужасное форматирование (я также знаю, что мне не следует использовать позиционные параметры для sql-запросов, но я не вижу другого способа добиться конечного результата)
idPerson
105524 не существует, но очевидно, что он существует, по крайней мере, в базе данных, к которой подключается ваш код Python. - person Gord Thompson   schedule 08.02.2019