【问题标题】:Create a table by putting data from psycopg2 on QuestDB通过将来自 psycopg2 的数据放在 QuestDB 上来创建表
【发布时间】:2023-02-24 00:01:48
【问题描述】:

QuestDB 可以通过将来自 psycopg2 的数据放入其中来创建表吗?

  • 我想使用 psycopg2 初始化表

【问题讨论】:

    标签: questdb


    【解决方案1】:

    就像您使用 PostgreSQL 一样。如果表存在,您可以直接插入。如果该表不存在,则需要先创建它。如果在使用其他协议时不存在该表,QuestDB 将自动创建该表,但使用 Postgres 协议则不会。

    这是一个非常简单的例子:

    import time
    import psycopg2 as pg
    
    conn_str = 'user=admin password=quest host=127.0.0.1 port=8812 dbname=qdb'
    with pg.connect(conn_str) as connection:
        with connection.cursor() as cur:
    
            cur.execute(''' 
                        CREATE TABLE IF NOT EXISTS new_table2(
                        ts TIMESTAMP, device_code UUID, temperature DOUBLE
                         ) timestamp(ts) PARTITION BY DAY WAL;
                         ''')
    
            timestamp = time.time_ns() // 1000
            cur.execute('''
                            INSERT INTO new_table2
                                VALUES (%s, %s, %s);
                            ''',
                        (timestamp, 'ab632aba-be36-43e5-a4a0-4895e9cd3f0d', 79))
    
            connection.commit()
            time.sleep(0.5)
    
            cur.execute('SELECT * FROM new_table2')
            print('Selecting rows from test table using cursor.fetchall')
            records = cur.fetchall()
    
            print("Print each row and it's columns values")
            for row in records:
                print("y = ", row[0], row[1], row[2], "
    ")
    

    当然应该实现错误处理,并且您不需要在每次插入后都提交,但是该示例应该可以帮助您使用 postgresql 协议插入数据。

    另一个细节是我正在使用 WAL 参数创建表。我这样做是因为 WAL 表在使用 postgresql 协议时可以接受并发插入,但非 WAL 表在这种情况下会获得锁。更多信息请访问https://questdb.io/docs/concept/write-ahead-log/

    【讨论】:

      猜你喜欢
      • 2022-06-18
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      相关资源
      最近更新 更多