通过将来自 psycopg2 的数据放在 QuestDB 上来创建表

问题描述 投票:0回答:2

QuestDB可以把psycopg2的数据放进去建表吗?

  • 我想使用 psycopg2 初始化表
psycopg2 questdb
2个回答
0
投票

就像您使用 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 its columns values")
        for row in records:
            print("y = ", row[0], row[1], row[2], "\n")

当然应该实现错误处理,你不需要在每次插入后都提交,但是那个例子应该帮助你使用 postgresql 协议插入数据。

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


0
投票

下面是如何使用 psycopg2 在 QuestDB 中创建表并向其中插入一些数据的示例:

import psycopg2
# Connect to the PostgreSQL database using psycopg2
conn = psycopg2.connect(
    host="your_host",
    database="your_database",
    user="your_username",
    password="your_password"
)

# Create a cursor object to interact with the database
cur = conn.cursor()

# Create a table in QuestDB
cur.execute("CREATE TABLE my_table (id SERIAL PRIMARY KEY, name VARCHAR(50), age INT)")

# Insert some data into the table
cur.execute("INSERT INTO my_table (name, age) VALUES (%s, %s)", ("John Doe", 30))
cur.execute("INSERT INTO my_table (name, age) VALUES (%s, %s)", ("Jane Doe", 25))

# Commit the changes to the database
conn.commit()

# Close the cursor and connection objects
cur.close()
conn.close()

在这个例子中,我们首先使用 psycopg2.connect() 函数连接到 PostgreSQL 数据库。然后我们使用 conn.cursor() 方法创建一个游标对象,它允许我们与数据库进行交互。

我们使用 cur.execute() 方法来执行 SQL 命令。在这种情况下,我们首先创建一个名为 my_table 的表,其中包含三列:id(一个串行主键)、name(一个字符串)和 age(一个整数)。然后我们使用 INSERT INTO 命令将两行数据插入到表中。

最后,我们使用 conn.commit() 方法将更改提交到数据库,并分别使用 cur.close() 和 conn.close() 方法关闭游标和连接对象。

© www.soinside.com 2019 - 2024. All rights reserved.