首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将list[adodbapi.apibase.SQLrow]转换为pd.DataFrame

将list[adodbapi.apibase.SQLrow]转换为pd.DataFrame
EN

Stack Overflow用户
提问于 2019-05-10 09:56:41
回答 3查看 1.7K关注 0票数 2

在sql-server连接器中,adodbapi是唯一在我的环境中工作的连接器。

代码语言:javascript
复制
import adodbapi

conn = adodbapi.connect("PROVIDER=SQLOLEDB;Data Source={0};Database={1}; \
       UID={2};PWD={3};".format(server,db,user,pwd))
cursor = conn.cursor()
query_list = [row for row in cursor]

type(query_list[0]) = adodbapi.apibase.SQLrow

如何将这份清单转换成熊猫df?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-05 17:46:29

我就是这样做的:

代码语言:javascript
复制
import adodbapi as ado
import numpy as np
import pandas as pd

def get_df(data):
    ar = np.array(data.ado_results) # turn ado results into a numpy array
    df = pd.DataFrame(ar).transpose() # create a dataframe from the array
    df.columns = data.columnNames.keys() # set column names
    return df

with ado.connect('yourconnectionstring') as con:
    with con.cursor() as cur:
        sql_str = 'yourquery'
        cur.execute(sql_str)
        data = cur.fetchall()
        df = get_df(data)
票数 6
EN

Stack Overflow用户

发布于 2019-05-10 10:11:24

这可能有助于:

将熊猫作为pd导入

代码语言:javascript
复制
.......
ur_statements
.......

query_list = [row for row in cursor]
df = pd.DataFrame({'col':query_list })
print (df)
票数 0
EN

Stack Overflow用户

发布于 2019-09-17 19:40:17

考虑一下熊猫的read_sql直接查询数据库。但目前,您将收到一个错误:

KeyError:'_typ‘

但是,由于@TomAubrunner在这个Github票上有一个可以工作的修复程序,这似乎是adodbapi中的一个bug。

  1. 查找adodpapiprint(adodbapi.__file__)的位置
  2. 在文件夹中打开脚本:apibase.py
  3. 定位:return self._getValue(self.rows.columnNames[name.lower()])并替换为下面的try/execpt块: try:返回self._getValue(self.rows.columnNamesname.lower())除外:返回False

一旦完成,只需像运行任何DB熊猫连接一样运行,即使使用qmark参数:

代码语言:javascript
复制
import pandas as pd
import adodbapi

conn = adodbapi.connect("PROVIDER=SQLOLEDB;Data Source={0};Database={1}; \
       UID={2};PWD={3};".format(server,db,user,pwd))

# WITHOUT PARAMS
df = pd.read_sql("SELECT * FROM myTable", conn)

# WITH PARAMS    
df = pd.read_sql("SELECT * FROM myTable WHERE [Col]= ?", conn, params=['myValue'])

conn.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56075159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档