import pyodbc
##Windows系统下使用微软SQL Server数据库驱动
def get_sms_operator():
cnxn=pyodbc.connect("DRIVER={SQL SERVER};SERVER=localhost;PORT=1433;DATABASE=peng;UID=sa;PWD=admin")
cur=cnxn.cursor()
select="Select * from [peng].[dbo].[subloans]"
cur.execute(select)
#rows=cur.fetchall()
row=cur.fetchone()
if row:
return row
else:
raise Exception,"There seems no operator on sector:"+str(sectorNumber)
cnxn.close()
for row in get_sms_operator(0):
print row
##在上述代码中,PORT是数据库的端口,在SQL Server配置管理器中可以看到。如下,我的2008R的端口为1433,
UID是指登录名,PWD为登陆密码。
在上面这种方法可以将数据一条一条的读出来,读取格式为pyodbc.Row,也可以将其中代码改为
row=cur.fetchall()
得到所有的数据,数据类型为List,但是利用pandas.DataFrame将其转化为dataframe数据类型是只能转换为411*1的形式。
利用第二种方法(如下)可以直接将数据读取为dataframe类型、
##第二种方法,可以将数据读取为dataframe格式
conn=pyodbc.connect('DRIVER={SQLSERVER};SERVER=localhost;PORT=1433;DATABASE=peng;UID=sa;PWD=admin')
data_frame=pd.read_sql("""select * from [peng].[dbo].[subloans$]""",conn)
读取结果为
>>> data_frame.shape
(411, 74)