这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

Python

Vertica Python 驱动程序为 Python 客户端应用程序提供与数据库交互的接口。

先决条件

在创建 Python 客户端应用程序之前,必须配置 Python 开发环境

1 - 在 Linux 中配置 ODBC 运行时环境,请执行下列操作:

若要在 Linux 中配置 ODBC 运行时环境,请执行下列操作:

  1. 创建 odbc.ini 文件(如果此文件尚未存在)。

  2. 将 ODBC 驱动程序目录添加到 LD_LIBRARY_PATH 系统环境变量:

    export LD_LIBRARY_PATH=/path-to-vertica-odbc-driver:$LD_LIBRARY_PATH
    

这些步骤仅与 unixODBC 和 iODBC 相关。有关 odbc.ini 的详细信息,请参阅其相应文档。

另请参阅

2 - 使用 pyodbc 查询数据库

以下示例会话将 pyodbc 与 Vertica ODBC 驱动程序结合使用,以将 Python 连接到 Vertica 数据库。

示例脚本

以下示例脚本显示了如何使用 Python 3、pyodbc 和 ODBC DSN 查询 Vertica。


import pyodbc
cnxn = pyodbc.connect("DSN=VerticaDSN", ansi=True)
cursor = cnxn.cursor()
# create table
cursor.execute("CREATE TABLE TEST("
    "C_ID  INT,"
    "C_FP  FLOAT,"
    "C_VARCHAR VARCHAR(100),"
    "C_DATE DATE, C_TIME TIME,"
    "C_TS TIMESTAMP,"
    "C_BOOL BOOL)")
cursor.execute("INSERT INTO test VALUES(1,1.1,'abcdefg1234567890','1901-01-01','23:12:34','1901-01-01 09:00:09','t')")
cursor.execute("INSERT INTO test VALUES(2,3.4,'zxcasdqwe09876543','1991-11-11','00:00:01','1981-12-31 19:19:19','f')")
cursor.execute("SELECT * FROM TEST")
rows = cursor.fetchall()
for row in rows:
    print(row, end='\n')
cursor.execute("DROP TABLE TEST CASCADE")
cursor.close()
cnxn.close()

生成的输出如下所示:

(2, 3.4, 'zxcasdqwe09876543', datetime.date(1991, 11, 11), datetime.time(0, 0, 1), datetime.datetime(1981, 12, 31, 19, 19, 19), False)
(1, 1.1, 'abcdefg1234567890', datetime.date(1901, 1, 1), datetime.time(23, 12, 34), datetime.datetime(1901, 1, 1, 9, 0, 9), True)

注意

对于未命名的主键约束,SQLPrimaryKeys 将返回主键 (pk_name) 列中的表名。例如:

  • 未命名主键:

    CREATE TABLE schema.test(c INT PRIMARY KEY);
    
    SQLPrimaryKeys
    "TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "COLUMN_NAME", "KEY_SEQ", "PK_NAME" <Null>, "SCHEMA", "TEST", "C", 1, "TEST"
    
  • 已命名主键:

    CREATE TABLE schema.test(c INT CONSTRAINT pk_1 PRIMARY KEY);
    
    SQLPrimaryKeys
    "TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "COLUMN_NAME", "KEY_SEQ", "PK_NAME" <Null>, "SCHEMA", "TEST", "C", 1, "PK_1"
    

Micro Focus 建议对约束进行命名。

另请参阅