Python fetchall возвращает истину и ложь

У меня есть скрипт на Python, который выполняет функцию fetchall ():

connection = pymssql.connect(host='host', user='user', password='pw', database='database', as_dict=True)

cursor = connection.cursor()

cursor.execute("EXEC SPname")
data=cursor.fetchall()

Моя проблема в том, что cursor.fetchall () возвращает True или Falses (и другие столбцы с другими значениями, пример выше), но в базе данных значение бит 1 или 0, а при экспорте в CSV он помещает True или False, и я хотите 1 или 0.

Пример данных, возвращаемых в SQL:

ID      Price       Price2      Price3      Active      Opened      Sent        Enable
1      12234.09     1111.09    3444.36      1           1           1           0   
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
554
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Можно использовать int()

Бывший:

print(int(True))
print(int(False))

Выход:

1
0

Спасибо за ответ и помощь. Проблема в том, что SP возвращает несколько столбцов, в данном случае 88, и я не хочу явно указывать их, потому что у него много столбцов, и мне нужно что-то динамическое, потому что, если я изменю SP, чтобы вернуть еще один столбец, я этого не сделаю. хотите изменить сценарий, чтобы добавить столбец. Следующая цель: сделайте следующее: a= csv.writer(fp, delimiter=';') for line in data: a.writerows(line)

tg_dev3 03.07.2018 11:53

Вам не нужно изменять SP, вместо этого измените значение bool прямо перед записью в файл csv.

Rakesh 03.07.2018 11:55

Правильно, но это означает, что я делаю: a= csv.writer(fp, delimiter=';') for line in data: line["mycolumn1"] = int(line["mycolumn1"]) line["mycolumn2"] = int(line["mycolumn2"]) line["mycolumn3"] = int(line["mycolumn3"]) a.writerows(line) И это занимает много времени, и если бы у меня было новое битовое значение в SP, я должен был бы добавить еще одно условие в скрипт

tg_dev3 03.07.2018 12:14

Можете выложить образец data?

Rakesh 03.07.2018 12:22
line = [True, 12234.09, 1111.09, 3444.36, True, True, True, False] print( [int(i) if isinstance(i, bool) else i for i in line] )?
Rakesh 03.07.2018 12:41

fetchall возвращает список кортежей или словарей. Самый простой способ преобразовать их в целые числа - сопоставить метод int с этим списком:

data_in_integer_form = map(int, data)

Спасибо за вашу помощь, но возвращаемые данные не только логические, но и десятичные, строковые и т. д.

tg_dev3 03.07.2018 12:21

Что ж, это другой вопрос, чем тот, который был задан в первую очередь. Вы сказали, что запрос возвращает True и False, а не десятичные дроби и строки.

Poshi 03.07.2018 12:27

Другие вопросы по теме