使用PYODBC在Vertica中创建表时出现语法错误

时间:2015-10-19 22:49:20

标签: python sql pyodbc create-table vertica

我正在尝试使用PYODBC将一大堆SQL查询加载到Vertica中的表中。这是我的代码:

tablename = DVXTEMP.my_table_name
sql = my_sql_query.strip().strip(';')
samplesize = 1000

createstring =   'CREATE TABLE %s AS %s \n limit %s;' %(tablename, sql, samplesize)

cursor.execute(createstring)

当我打印creattring并在Toad中运行它时,它工作正常。当我尝试在pyodbc中执行它时,它给了我以下错误:

'Syntax error at or near "DVXTEMP" at character 1\n (4856) (SQLExecDirectW)'

我们正在使用Vertica Analytic Database v7.1.2-6

任何可能导致此问题的想法?

由于

1 个答案:

答案 0 :(得分:0)

1)你导入了pyodbc吗?

2)你定义了"光标"来自" pyodbc.connect"?

import pyodbc

DB = '[string for dbfile]'
DRV = '[string of which driver you are going to use]'
con = pyodbc.connect('DRIVER={};DBQ={}'.format(DRV,DB))
cursor = con.cursor()
##build SQL code and execute as you have done

在没有错误的情况下连接后尝试SQL命令。

3)我使用pyodbc进行mdb文件(MS Access),除非我在表/字段名称的双引号外放置单引号,否则我的一些查询将无法运行。

mytbl_1 = "mytbl"
SQL = 'SELECT * FROM ' + mytbl_1
print SQL

打印结果 - > SELECT * FROM mytbl

(这失败了)

mytbl_2 = '"mytbl"' #single quotes outside of double quote
SQL = 'SELECT * FROM ' + mytbl_2
print SQL

打印结果 - > SELECT * FROM" mytbl"

(这个字符串被传递,没有错误对我有MDB文件)