Ceci est juste une solution de contournement, mais vous pouvez simplement envoyer quelque chose dans psql. J'utilise parfois cette recette quand je suis trop paresseux pour arrêter 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)
En ce qui concerne votre verrouillage, utilisez-vous plusieurs threads ou quelque chose comme ça ?
Votre postgres enregistre-t-il quelque chose comme une connexion fermée ou un blocage ? Pouvez-vous voir l'activité du disque après son verrouillage ?