Dette er kun en løsning, men du kan bare overføre noget til psql. Jeg bruger denne opskrift nogle gange, når jeg er for doven til at sprænge 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)
Hvad angår din låsning, bruger du så flere tråde eller noget lignende?
Logger din postgres noget, såsom en lukket forbindelse eller en dødvande? Kan du se diskaktivitet, efter at den er låst?