Синтаксическая ошибка при создании таблицы в postgresql дБ с помощью Flask -sqlalchemy - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь создать новую таблицу в postgresql дБ у меня в AWS EC2 экземпляре, используя flask -sqlalchemy следующим образом:

def table_create():
    conn = psycopg2.connect(
        dbname='XYZ',
        user='ABC',
        host='ec2-xx-xxx-xxx-xxx.eu-central-1.compute.amazonaws.com',
        password='mypassword')
    cursor = conn.cursor()
    create_table_query = '''CREATE TABLE price_ht
    (ID SERIAL PRIMARY KEY NOT NULL,
    country_code CHAR(2) NOT NULL,
    value float(2) NOT NULL,
    start timestamp with time zone NOT NULL,
    end timestamp with time zone NOT NULL,
    price_type VARCHAR(32) NOT NULL)'''
    cursor.execute(create_table_query)
    cursor.execute("CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;")
    cursor.execute(
        "SELECT create_hypertable('price_ht', 'id', chunk_time_interval=>24)")
    conn.commit()
    print("Table created")

Когда я запускаю код, Я получаю следующую ошибку:

Произошло исключение: синтаксическая ошибка SyntaxError на или около "конца" LINE 6: конечная метка времени с часовым поясом NOT NULL,

Значения должно храниться следующее:

enter image description here

Может кто-нибудь сказать мне, в чем я совершаю ошибку?

1 Ответ

1 голос
/ 04 мая 2020

end является зарезервированным словом в Postgresql. Обычно это «плохая практика» - использовать их при именовании вещей, и в вашем случае это приводит к синтаксической ошибке.

Если вы действительно хотите использовать его - вам придется заключить его в ".

CREATE TABLE price_ht
    (ID SERIAL PRIMARY KEY NOT NULL,
    country_code CHAR(2) NOT NULL,
    value float(2) NOT NULL,
    start timestamp with time zone NOT NULL,
    "end" timestamp with time zone NOT NULL,
    price_type VARCHAR(32) NOT NULL)
...