我想编写最有效的代码以将Microsoft SQL数据导入数据框

时间:2018-11-13 15:26:35

标签: python pandas

我想尽可能有效地将SQL查询加载到数据帧中。我阅读了不同的资料,每个人似乎都使用不同的方法。我不确定为什么...有些正在使用游标,有些却没有。

目前,我有:

import pandas as pd
import pyodbc

con = pyodbc.connect('Driver={something};'
    'Server=something;'
    'Database=something;'
    'Trusted_Connection=yes;'
)

sql="""
SQL CODE
"""

df = pd.read_sql_query(con,sql)

由于某种原因,这在我的机器上不起作用。

3 个答案:

答案 0 :(得分:0)

尝试此解决方案

import pyodbc
import pandas as pd

cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                      "Server=something;"
                      "Database=something;"
                      "Trusted_Connection=yes;")


cursor = cnxn.cursor()
cursor.execute('SELECT * FROM something')

for row in cursor:
    print(row)

答案 1 :(得分:0)

import pandas as pd
import pyodbc

con = pyodbc.connect('Driver={something};'
    'Server=something;'
    'Database=something;'
    'Trusted_Connection=yes;'
)

cursor = con.cursor()

cursor.execute("SQL Syntax")

不太确定最后一行在做什么,但是cursor方法可以很好地运行并且可以以最少的代码高效地运行。

这应该运行。您可以通过添加sqllist = list(cursor.fetchall())然后打印(sqllist)

对其进行测试。

答案 2 :(得分:0)

只需将其打包为一个函数即可。我还要添加用户名和密码(以防万一)

import pandas as pd
import pyodbc

def GetSQLData(dbName, query):

    sPass = 'MyPassword'
    sServer = 'MyServer\\SQL1'
    uname = 'MyUser'

    cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                    "Server=" + sServer + ";"
                    "Database=" + dbName + ";"
                    "uid=" + uname + ";pwd=" + sPass)


    df = pd.read_sql(query, cnxn)

    return df