【发布时间】:2021-02-08 15:44:55
【问题描述】:
我正在编写一个脚本来获取服务器中的 CSV 文件并将其复制到 PostgreSQL 表中。在复制文件时,我找不到解决 Paramiko 引发的错误的方法。我不太明白这个错误,也没有找到可以帮助我解决这个问题的相关帖子。
SFTP 连接运行良好,数据库远程访问也运行良好,这是有问题的代码块:
try:
sftp = paramiko.SFTPClient.from_transport(transport)
sftp = transport.open_sftp_client()
print("SFTP Client : Open")
except Exception as e:
msg = "Error connecting via ssh: %s" % e
raise paramiko.SSHException(msg)
XT = "*.csv"
for filename in sftp.listdir(SSH_DIR):
print(filename,'if-found')
print("entered loop")
path = '/%s/%s' % (SSH_DIR, filename)
fobj = sftp.file(os.path.join(SSH_DIR,filename), 'rb')
print(fobj)
cur.execute('TRUNCATE TABLE %s' % TABLE_NAME)
sql = "COPY %s FROM STDIN WITH DELIMITER AS ',' csv header"
table = 'my_table'
cur.copy_expert(sql=sql % table, file=fobj)
conn.commit()
transport.close()
这是执行脚本时出现的错误
Database connected...
SSH connection succesful
SFTP Client : Open
kpis_inventory_analysis.csv if-found
entered loop
<paramiko.sftp_file.SFTPFile object at 0x7f0369d81f28>
Exception ignored in: <bound method SFTPFile.__del__ of <paramiko.sftp_file.SFTPFile object at 0x7f0369d81f28>>
Traceback (most recent call last):
File "/home/ubuntu/myenv/lib/python3.6/site-packages/paramiko/sftp_file.py", line 76, in __del__
File "/home/ubuntu/myenv/lib/python3.6/site-packages/paramiko/sftp_file.py", line 108, in _close
TypeError: catching classes that do not inherit from BaseException is not allowed
对于这个问题的任何帮助将不胜感激
【问题讨论】:
标签: python postgresql sftp psycopg2 paramiko