当前位置:Gxlcms > 数据库问题 > Python学习 第9天 连接FTP和数据库

Python学习 第9天 连接FTP和数据库

时间:2021-07-01 10:21:17 帮助过:47人阅读

encoding=utf-8 from ftplib import FTP import os, sys, string, datetime, time, socket, pymssql reload(sys) sys.setdefaultencoding(utf8) class MYFTP: def __init__(self, hostaddr, username, password, remotedir, port=21): self.hostaddr = hostaddr self.username = username self.password = password self.remotedir = remotedir self.port = port self.ftp = FTP() self.file_list = [] def __del__(self): self.ftp.close() def login(self): ftp = self.ftp timeout = 300 socket.setdefaulttimeout(timeout) ftp.set_pasv(True) ftp.connect(self.hostaddr, self.port) ftp.login(self.username, self.password) print u成功登录到 %s % (self.hostaddr) ftp.cwd(self.remotedir) def list_files(self, picId, remotedir=./): self.ftp.cwd(remotedir) print(u正在处理目录 %s % self.ftp.pwd()) self.file_list = [] self.ftp.dir(self.get_file_list) for item in self.file_list: sql_str.append(‘‘‘ INSERT INTO CaseArchive ( OrderID, CaseID, DocCaseID, EvidenceName, Amount, Page, TotalPage, FilePath, FileName) VALUES (‘%s‘, ‘‘, ‘‘, ‘%s‘, ‘1‘, ‘1‘, ‘1‘, ‘%s‘, ‘%s‘); ‘‘‘ % (self.file_list.index(item) + 1, item[1].split(.)[0], remotedir.encode("UTF-8"), item[1])) sql_str.append("DELETE FROM CaseArchive WHERE PicID = ‘%s‘;" % picId) def get_file_list(self, line): ret_arr = [] file_arr = self.get_filename(line) if file_arr[1] not in [., ..]: self.file_list.append(file_arr) def get_filename(self, line): pos = line.rfind(:) while(line[pos] != ): pos += 1 while(line[pos] == ): pos += 1 while(line[pos] != ): pos += 1 while(line[pos] == ): pos += 1 file_arr = [line[0], line[pos:]] return file_arr if __name__ == __main__: conn = pymssql.connect(host=‘‘,user=‘‘,password=‘‘,database=‘‘,charset=utf8) cur = conn.cursor() #先获取FTP配置 cur.execute("SELECT ParamValue FROM ParamConfig WHERE ParamName = ‘FTP地址‘;") hostaddr = cur.fetchone()[0] # ftp地址 cur.execute("SELECT ParamValue FROM ParamConfig WHERE ParamName = ‘FTP用户名‘;") username = cur.fetchone()[0] # 用户名 cur.execute("SELECT ParamValue FROM ParamConfig WHERE ParamName = ‘FTP密码‘;") password = cur.fetchone()[0] # 密码 cur.execute("SELECT ParamValue FROM ParamConfig WHERE ParamName = ‘FTP端口‘;") port = cur.fetchone()[0] # 端口号 #连接FTP rootdir_remote = ‘‘ # 远程目录 f = MYFTP(hostaddr, username, password, rootdir_remote, port) f.login() sql_str = [] cur.execute("SELECT PicID, FilePath FROM CaseArchive WHERE Remark = ‘仅目录‘ GROUP BY FilePath;") rows = cur.fetchall() for row in rows: f.list_files(row[0], row[1]) #拼好的字符串一次性执行,如果update/delete/insert记得要conn.commit(),否则数据库事务无法提交 cur.execute (‘‘.join(sql_str)) conn.commit() #关闭数据库连接 cur.close() conn.close()

还在调试中

Python学习 第9天 连接FTP和数据库

标签:word   用户名   密码   [1]   file   find   mit   __del__   values   

人气教程排行