Detta är bara en lösning, men du kan bara överföra något till psql. Jag använder det här receptet ibland när jag är för lat för att slå ut 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)
När det gäller din låsning, använder du flera trådar eller något liknande?
Loggar din postgres något som en stängd anslutning eller ett dödläge? Kan du se diskaktivitet efter att den låser sig?