Skip to main content
 首页 » 编程设计

python之将列表转换为数据框 PYTHON之SQL

2025年05月04日12kevingrace

我目前正在通过 python 从 SQL Server 中提取一些数据,

使用以下内容:

import pyodbc 
data = [] 
con = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL Server}',server = 'bhxsql2014-dev', database = 'BMAnalytics') 
 
cursor = con.cursor() 
 
cursor.execute(" select * from dbo.EUActiveStores ") 
for columns in cursor.fetchall(): 
    data.append(columns[0:]) 
 
print(data) 

它返回以下格式的数据(前 2 行作为样本):

[(1.0, 'Bradford', 'Main', 1.0, 'UK', 850.3489216, 79.0, 'Sharon Watson', 'Malcolm Bateman', 0.0, '199446', 199602.0, 'ST1', 1201.0, '12', 53.794851, -1.755584, 'COMP', 'Main', 'MALL', None), (4.0, 'EASTBOURNE', 'Main', 1.0, 'UK', 646.9788276755199, 60.10629999999999, 'Jocelyn Hill', 'Andrea Varley', 0.0, '199642', 199750.0, 'ST1', 1304.0, '13', 50.7696, 0.2859, 'COMP', 'Main', 'MALL', None), 

似乎每一行都包含在括号内,并用逗号分隔。

我不知道如何将它变成数据框,有什么建议吗?

请您参考如下方法:

使用Pandas.read_sql()方法 - 它将处理其余部分:

df = pd.read_sql(query, con) 

您可能还想使用非常快的模块 turbodbc :

from turbodbc import connect, make_options 
options = make_options() 
connection = connect(dsn="my_dsn", turbodbc_options=options) 
 
cursor = connection.cursor() 
cursor.execute("SELECT A, B FROM my_table") 
df = cursor.fetchallarrow(strings_as_dictionary=True).to_pandas() 
cursor.close()