On met dans une transaction atomique le truncate/copy.
* Cela permet de s'assurer que la table contient bien des données en tout instant où elle le devrait (c'est-à-dire quand on ne la vide pas explicitement)
This commit is contained in:
parent
23c9df55eb
commit
d9bd6a621d
1 changed files with 8 additions and 3 deletions
|
@ -440,9 +440,14 @@ def main(curseur, ldap):
|
||||||
# On crée un stream qui sera ensuite utilisé par PostgreSQL
|
# On crée un stream qui sera ensuite utilisé par PostgreSQL
|
||||||
stream = cStringIO.StringIO("\n".join(["%s\t%s\t%s\t%s" % (key[0], key[1], value, CUR_DATE) for (key, value) in accounted.iteritems()]))
|
stream = cStringIO.StringIO("\n".join(["%s\t%s\t%s\t%s" % (key[0], key[1], value, CUR_DATE) for (key, value) in accounted.iteritems()]))
|
||||||
|
|
||||||
# On met à jour accounting.
|
# On met à jour accounting, en utilisant une nouvelle
|
||||||
curseur.execute("TRUNCATE accounting;")
|
# connexion, qui effectue le truncate/copy dans la même
|
||||||
curseur.copy_from(stream, "accounting")
|
# transaction.
|
||||||
|
conn = psycopg2.connect(database='filtrage', user='crans')
|
||||||
|
curs = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
|
||||||
|
curs.execute("TRUNCATE accounting;")
|
||||||
|
curs.copy_from(stream, "accounting")
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
# Check and blacklist
|
# Check and blacklist
|
||||||
check_and_blacklist(accounted, curseur, ldap)
|
check_and_blacklist(accounted, curseur, ldap)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue