0

Pythonスクリプト(psycopg2を使用)を使用してツイートをpostgresデータベースにストリーミングしています。このスクリプトを Windows タスク マネージャーでスケジュールできるようにしたいと考えています。私が克服しなければならない唯一の問題は、postgres でテーブルの名前を変更できるようにすることです。出来ますか?

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))

** アップデート

その答えはさらに進んでいますが、今では数字について不平を言っているだけです。

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
4

1 に答える 1

1

行でエラーが発生していると思います

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

psycopg はあなたが望むものを生成しないため:

DROP TABLE IF EXISTS schemaname."table_name"

使ってみて

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

これは可能な限り安全ではありませんが、テーブル名は SQL 文字列ではなく名前になりました。

于 2016-03-01T10:57:24.247 に答える