Запрос списка кортежей в базе данных

Поскольку я новичок в программировании на python, я не знаю больше о запросе данных из базы данных. Во-первых, я создал свою базу данных в SQL Server с двумя столбцами: столбцом String столбцом Numeric .

+--------+---------+ | String | Numeric | +--------+---------+ | One | 1 | | Five | 5 | | Three | 3 | | Seven | 7 | | Eight | 8 | | Two | 2 | +--------+---------+

Например:

X = [('three','odd'), ('one','odd'), ('two','even')]

Теперь я хочу, чтобы результат последовал за этой последовательностью: odd – even – odd так что это будет так: 1 2 3 . +-----+------+-----+ | Odd | Even | Odd | +-----+------+-----+ | 1 | 2 | 3 | +-----+------+-----+

Как запросить numeric значение string на основе, если odd или even string находится в базе данных?

  • Использование pyodbc вызывает ошибку: имя источника данных не найдено, и драйвер по умолчанию не указан
  • sqlalchemy подключиться к серверу, не указывая базу данных
  • SQLAlchemy не может подключиться к базе данных mssql
  • SQL Server, Python и OS X
  • SqlAlchemy эквивалент строки соединения podbcc с использованием FreeTDS
  • Подключение к SQL Server 2012 с использованием sqlalchemy и pyodbc
  • Как использовать проверку подлинности Windows для подключения к серверу MS SQL с рабочей станции Windows в другом домене с помощью Python
  • Каков самый простой способ доступа к mssql с помощью python или ironpython?
  • One Solution collect form web for “Запрос списка кортежей в базе данных”

    Ваш запрос не ясен для меня. Вы смешиваете структуры данных SQL и структуры данных Python, и неясно, будет ли это вызываться из Python или из SQL. Ваш запрос должен содержать код, который вы пытаетесь выполнить.

    С такими простыми данными в ваших таблицах SQL вы можете думать о таблицах SQL, как о словарях Python. NUMSTR dict представляет собой первую таблицу SQL, и я изменяю X список кортежей в dict:

     NUMSTR = {1: 'one', 2: 'two', 3: 'three'} X = {'three': 'odd', 'one': 'odd', 'two': 'even'} def show_even_odd(in_numbers): numbers_info = [] for i in in_numbers: try: num_name = NUMSTR[i] eo = X[num_name] except KeyError: eo = '???' numbers_info.append(eo) print(' | '.join(['%4s' % x for x in numbers_info])) print(' | '.join(['%4s' % x for x in in_numbers])) def test(): show_even_odd([1, 2, 3]) 

    Я сохранил данные в numbers_info чтобы отобразить их в одной строке. Было бы проще показать информацию о каждом номере в отдельной строке.

    РЕДАКТИРОВАТЬ

    Если ваша проблема состоит в том, чтобы получить первое значение каждого кортежа и отобразить его числовое значение, тогда такой код выглядит так:

     X = [('three','odd'), ('one','odd'), ('two','even')] for nn, eo in X: print('%s - %s' % (get_number(nn), eo)) 

    Теперь вы должны определить get_number() . С глобальным cursor это может работать:

     def get_number(number_name): result = number_name cursor.execute('SELECT numeric FROM my_table WHERE String = ?', number_name) for txt in cursor.fetchall(): result = txt[0] return result 

    PS В этом коде я использовал ? в SELECT чтобы подготовить подготовленный оператор. Он должен быть заменен на number_name драйвером ODBC. Такая операция может выполняться с помощью Python: "SELECT ... WHERE String = '%s'" % (number_name) , но подготовленные заявления намного лучше. Они препятствуют внедрению SQL Injection, и база данных может лучше кэшировать план запросов для таких операторов.

    Interesting Posts
    Python - лучший язык программирования в мире.