使用 Data Frame 设置 Data Frame 列名称包括额外字符:('ColumnName',)

Setting Data Frame Column Names with Data Frame includes extra characters: ('ColumnName',)

我有一个 python 脚本集,用于从 Pervasive PSQL 数据库中提取数据和列名,然后它在 MS [=] 中创建 table 和记录25=]。我正在为数据和列名创建数据框,然后根据列名日期框重命名数据的列名。

但是,当在 MS SQL 中创建 table 时,列名称将作为 = ('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))

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

Pyodbc 会将其捕获的数据移动到 pyodbc 对象中。 type(stRows_col) 会产生 <class 'pyodbc.Cursor'>row 会产生 <class 'pyodbc.Row'>。您可以使用 row[0]

获取 pyodbc.Row 的值