Установка имен столбцов фрейма данных с помощью фрейма данных включает дополнительные символы: ('ColumnName',)

У меня есть скрипт Python, настроенный для извлечения данных и имен столбцов из базы данных Pervasive PSQL, а затем он создает таблицу и записи в MS SQL. Я создаю фреймы данных для данных и для имен столбцов, а затем переименовываю имена столбцов данных из фрейма даты имени столбца.

Однако, когда таблица создается в MS SQL, имена столбцов отображаются как = ('ColumnName',)

Установка имен столбцов фрейма данных с помощью фрейма данных включает дополнительные символы: ('ColumnName',)

Желаемые имена столбцов не будут иметь ('',) и должны читаться как = ColumnName

Ниже приведен код, который я использую, чтобы добраться сюда. Любая помощь в форматировании имен столбцов, чтобы они не включали эти дополнительные символы, была бы очень полезна!

'''
Start - Pull Table Data
'''
conn = pyodbc.connect(conn_str, autocommit=True)
cursor = conn.cursor()
statement = 'select * from '+db_tbl_name
stRows = cursor.execute(statement)
df_data = pandas.DataFrame((tuple(t) for t in stRows))
df_data = df_data.applymap(str)
'''
End - Pull Table Data
'''

'''
Start - Pull Column Names
'''
conn = pyodbc.connect(conn_str, autocommit=True)
cursor_col = conn.cursor()
statement_col = "select CustomColumnName from "+db_col_tbl_name+" where CustomTableName = '"+db_tbl_name+"' and ODBCOptions > 0 order by FieldNumber"
stRows_col = cursor_col.execute(statement_col)
df_col = pandas.DataFrame((tuple(t) for t in stRows_col))

'''
End - Pull Column Names
'''

'''
Start - Add Column Names to Table data (df_data)
'''

df_data.columns = df_col

'''
End - Add Column Names to Table data (df_data)
'''

'''
Start - Create a sqlalchemy engine
'''

params = urllib.parse.quote_plus("DRIVER = {SQL Server Native Client 11.0};"
                                 "SERVER=Server;"
                                 "DATABASE=DB;"
                                 "UID=UID;"
                                 "PWD=PWD;")

engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect = {}".format(params))

'''
End - Create a sqlalchemy engine
'''



'''
Start - Create sql table and rows from sqlalchemy engine
'''

df_data.to_sql(name=db_tbl_name, con=engine, if_exists='replace')

'''
End - Create sql table and rows from sqlalchemy engine
'''

зачем ты это делаешь df_col = pandas.DataFrame((tuple(t) for t in stRows_col))

Yuca 06.05.2022 20:56
Почему в 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
1
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Это сработало для меня и должно решить проблему. Сдача.

df_col = pandas.DataFrame((tuple(t) for t in stRows_col))

к

df_col=[]
for row in stRows_col:
    df_col.append(row[0])

Pyodbc будет перемещать полученные данные в объекты pyodbc. type(stRows_col) даст <class 'pyodbc.Cursor'>, а row даст вам <class 'pyodbc.Row'>. Вы можете получить значение для pyodbc.Row, используя row[0]

Спасибо за помощь и понимание происходящего!

MaxMods 06.05.2022 21:37

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