Ini hanya solusi, tetapi Anda bisa menyalurkan sesuatu ke psql. Saya menggunakan resep ini kadang-kadang ketika saya terlalu malas untuk mengeluarkan psycopg2
import subprocess
def psql_copy_from(filename, tablename, columns = None):
"""Warning, this does not properly quote things"""
coltxt = ' (%s)' % ', '.join(columns) if columns else ''
with open(filename) as f:
subprocess.check_call([
'psql',
'-c', 'COPY %s%s FROM STDIN' % (tablename, coltxt),
'--set=ON_ERROR_STOP=true', # to be safe
# add your connection args here
], stdin=f)
Sejauh menyangkut penguncian Anda, apakah Anda menggunakan banyak utas atau semacamnya?
Apakah postgres Anda mencatat sesuatu seperti koneksi tertutup atau kebuntuan? Bisakah Anda melihat aktivitas disk setelah terkunci?