使用sqlalchemy存储数据帧,pyodbc:SQL语法错误

时间:2018-02-09 10:40:20

标签: python sqlalchemy teradata pyodbc

我想使用命令pandas.to_sql将数据帧存储到Teradata数据库中,但是会出现SQL语法错误。错误似乎来自内置方法,我不知道如何处理它。

我的代码:

import pandas as pd
import datetime as dt
import sqlalchemy, pyodbc

todays_date = dt.datetime.now().date()
index = pd.date_range(todays_date-dt.timedelta(10), periods=10, freq='D')
columns = ['A','B', 'C']
df_ = pd.DataFrame(index=index, columns=columns)
df_ = df_.fillna(0)

engine = sqlalchemy.create_engine("mssql+pyodbc://" + user + ":" + passwd + "@" +dsnname)
df_.to_sql(name= 'TableTest', con = engine, if_exists='replace')

我得到的错误:

  

ProgrammingError:(pyodbc.ProgrammingError)(' 42000'," [42000] [Teradata] [ODBC Teradata驱动程序] [Teradata数据库]语法错误:期待'( '和')'。( - 3706)(SQLExecDirectW)")[SQL:' SELECT schema_name()']

1 个答案:

答案 0 :(得分:1)

这里有两个部分的答案:

  1. 安装sqlalchemy-teradata
  2. 按如下所示创建引擎和表:

    engine = sqlalchemy.create_engine("teradata://" + user + ":" + passwd + "@" +dsnname)
    df.to_sql(name= 'TableTest', con = engine, index=False, schema='database_name', if_exists='replace')