【问题标题】:Storing a dataframe with sqlalchemy, pyodbc: SQL syntax error使用 sqlalchemy、pyodbc 存储数据帧:SQL 语法错误
【发布时间】:2018-07-20 02:46:48
【问题描述】:

我想使用命令 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 Database] 语法错误:预期在 '(' 和 ')' 之间存在某些内容。(-3706) ( SQLExecDirectW)") [SQL: 'SELECT schema_name()']

【问题讨论】:

    标签: python sqlalchemy teradata pyodbc


    【解决方案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')
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-14
      • 2019-09-13
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 2014-06-22
      • 1970-01-01
      相关资源
      最近更新 更多