我想尽可能有效地将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)
由于某种原因,这在我的机器上不起作用。
答案 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