我试图了解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,或者即使没有先保存到文件中也可以实现。
对于“写入sql服务器”部分,您可以使用便捷to_sql的pandas方法(因此无需遍历行并手动进行插入)。请参阅有关通过熊猫与SQL数据库进行交互的文档:http : //pandas.pydata.org/pandas- docs/stable/io.html#io-sql
to_sql
您至少需要熊猫0.14才能正常运行,并且还需要sqlalchemy安装。一个示例,假设df是您从中获得的DataFrame read_table:
sqlalchemy
df
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