一尘不染

使用PYODBC将数据从熊猫获取到SQL Server

python

我试图了解python如何将数据从FTP服务器拉到熊猫,然后将其移到SQL服务器。至少可以说,我的代码非常初级,我正在寻找任何建议或帮助。我试图先从FTP服务器上加载数据,这可以正常工作。…如果我随后删除此代码,并将其更改为从ms
sql服务器中选择的数据,那么它很好,因此连接字符串有效,但是插入到SQL中服务器似乎引起了问题。

import pyodbc
import pandas
from ftplib import FTP
from StringIO import StringIO
import csv

ftp = FTP ('ftp.xyz.com','user','pass' )
ftp.set_pasv(True)
r = StringIO()
ftp.retrbinary('filname.csv', r.write)

pandas.read_table (r.getvalue(), delimiter=',')


connStr = ('DRIVER={SQL Server Native Client 10.0};SERVER=localhost;DATABASE=TESTFEED;UID=sa;PWD=pass')
conn = pyodbc.connect(connStr)

cursor = conn.cursor()
cursor.execute("INSERT INTO dbo.tblImport(Startdt, Enddt, x,y,z,)" "VALUES                  (x,x,x,x,x,x,x,x,x,x.x,x)")
cursor.close()
conn.commit()
conn.close()
print"Script has successfully run!"

当我删除ftp代码时,它可以完美运行,但是我不知道如何进行下一次跳转以将其放入Microsoft SQL
Server,或者即使没有先保存到文件中也可以实现。


阅读 142

收藏
2020-12-20

共1个答案

一尘不染

对于“写入sql服务器”部分,您可以使用便捷to_sql的pandas方法(因此无需遍历行并手动进行插入)。请参阅有关通过熊猫与SQL数据库进行交互的文档:http : //pandas.pydata.org/pandas-
docs/stable/io.html#io-sql

您至少需要熊猫0.14才能正常运行,并且还需要sqlalchemy安装。一个示例,假设df是您从中获得的DataFrame
read_table

import sqlalchemy
import pyodbc
engine = sqlalchemy.create_engine("mssql+pyodbc://<username>:<password>@<dsnname>")

# write the DataFrame to a table in the sql database
df.to_sql("table_name", engine)

另请参阅的文档页面to_sql
有关如何为带有pyobdc的sql
server的sqlalchemy创建连接引擎的更多信息,可以在这里找到:http
://docs.sqlalchemy.org/en/rel_1_1/dialects/mssql.html#dialect-mssql-pyodbc-
connect


2020-12-20