使用 pyodbc 查询数据库
以下示例会话将 pyodbc 与 Vertica ODBC 驱动程序结合使用,以将 Python 连接到 Vertica 数据库。
注意
SQLFetchScroll 函数和 SQLFetch 函数不能在 iODBC 代码中一起使用。将 pyodbc 与 iODBC 驱动程序管理器结合使用时,skip 不能与 fetchall、fetchone 和 fetchmany 函数一起使用。示例脚本
以下示例脚本显示了如何使用 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 建议对约束进行命名。