Извлечь 1 столбец данных из SQL в Python - PullRequest
0 голосов
/ 05 марта 2020

Я подключился к базе данных SQL через python и пытаюсь извлечь один столбец данных. Тем не менее, когда я go для печати того, что я извлек, он отображает следующее:

('A', )
('B', )
('C', )
('D', )

Когда я извлекаю два столбца, он печатает:

('A', 'a' )
('B', 'b')
('C', 'c')
('D', 'd')

Есть ли способ просто взять данные в первом столбце без дополнительного , ) или даже преобразовать в кадр данных, сохранив имена столбцов из SQL? Я нашел много руководств по извлечению данных из SQL, но ни одно из них не показывало способность работать как фрейм данных и сохранять имена столбцов.

Код для генерации:

import pyodbc
conn = pyodbc.connect(driver='{SQL Server}'
                      ,server = 'server'
                      ,database = 'db1'
                      ,trusted_connection=True
                      ,user='user')
cursor=conn.cursor()
cursor.execute(
        '''SELECT
                Column_One
                --,Column_Two
            FROM db1.table''')
for row in cursor.fetchall():
    print(row)

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Попробуйте это

import pyodbc
conn = pyodbc.connect(driver='{SQL Server}'
                      ,server = 'server'
                      ,database = 'db1'
                      ,trusted_connection=True
                      ,user='user')
cursor=conn.cursor()
cursor.execute(
        '''SELECT
                Column_One
                --,Column_Two
            FROM db1.table''')

final_result = [list(i) for i in cursor.fetchall()]
0 голосов
/ 05 марта 2020
from sqlalchemy import create_engine
import pymysql
def keyword_sql():
    try:
        db_connection_str = 'mysql+pymysql://user:password@server/database'
        db_connection = create_engine(db_connection_str)
        df = pd.read_sql('SELECT keyword, category FROM additional_data_dictionary', con=db_connection)
        return df
    except:
        print("mysql connection issue - ignoring the user input")
        sys.exit(1)

Посмотрите, поможет ли это, я не использую pyodb c, я использую "sqlalchemy" - этот код напрямую возвращает pandas фрейм данных

...