2016-02-29 2 views
0

Je diffuse des tweets vers une base de données postgres avec un script python (en utilisant psycopg2). Je voudrais être en mesure de planifier ce script dans un gestionnaire de tâches Windows. Le seul problème que je dois surmonter est de pouvoir renommer la table en postgres. C'est possible?Mettez la date dans le nom de fichier postgres avec psycopg dans un script python

x = datetime.date.today() - datetime.timedelta(days=1) 
con = psycopg2.connect("dbname='test' user='postgres'") 

cur = con.cursor() 
cur.execute("DROP TABLE IF EXISTS schemaname.%s", (x)) 

** Mise à jour

Cette réponse ne va mon plus loin, maintenant, il se plaint à peu près les chiffres.

Traceback (most recent call last): 
File "Z:/deso-gis/scripts/test123.py", line 26, in <module> 
cur.execute("DROP TABLE IF EXISTS tweets_days.%s" % x) 
psycopg2.ProgrammingError: syntax error at or near ".2016" 
LINE 1: DROP TABLE IF EXISTS tweets_days.2016-02-29 

Répondre

1

Je crois que vous obtenez ARROR à la ligne

cur.execute("DROP TABLE IF EXISTS schemaname.%s", (x)) 

parce psycopg génère pas ce que vous voulez:

DROP TABLE IF EXISTS schemaname."table_name" 

essayez d'utiliser

cur.execute("DROP TABLE IF EXISTS schemaname.%s" % x) 

Ce n'est pas aussi sécurisé comme pourrait l'être, mais maintenant le nom de la table est le nom non Chaîne SQL.

+0

J'ai essayé votre réponse et elle m'a encore plus loin, pas encore là. Ma question est mise à jour. – Zuenie

+0

Je l'ai compris. Je devais ajouter "à la déclaration, comme la façon dont postgres l'aime.La ligne suivante a fait l'affaire cur.execute (" DROP TABLE SI EXISTE tweets_days. "'"% S "'" "% x) – Zuenie

+0

@Zenie Utilisez des guillemets pour éviter les dégâts: ''' 'DROP TABLE SI EXISTE tweets_days."% S "' ''% x' –