【问题标题】:How to connect to Teradata Server using sqlalchemy and DSN less connection如何使用 sqlalchemy 和 DSNless 连接连接到 Teradata Server
【发布时间】:2019-10-27 08:44:14
【问题描述】:

我无法确定需要传递给创建引擎语句的正确 ODBC 字符串。

这行得通

import pyodbc
import pandas as pd

cnxn=pyodbc.connect('DRIVER=/opt/teradata/client/ODBC_64/lib/tdata.so;DBCName=Server;UID=UN;PWD=PW;Database=myDB')

query = "select top 10 * from TABLE"
df = pd.read_sql(query,cnxn) 

这不起作用

import urllib
import sqlalchemy
params = urllib.parse.quote_plus('DRIVER=/opt/teradata/client/ODBC_64/lib/tdata.so;DBCName=Server;UID=UN;PWD=PW;Database=myDB')

engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)

query = "select top 10 * from TABLE"

df = pd.read_sql_query(query, engine)

我可以让 pyodbc 连接工作,但不能让 sqlalchemy 连接工作。任何帮助将不胜感激。

我收到此错误:

InterfaceError: (pyodbc.InterfaceError) ('IM001', '[IM001] [unixODBC][Driver Manager]Driver does not support this function (0) (SQLGetInfo)')

【问题讨论】:

标签: python pandas sqlalchemy teradata pyodbc


【解决方案1】:
#found the answer here. https://downloads.teradata.com/tools/articles/teradata-sqlalchemy-introduction

from sqlalchemy import create_engine
user = 'sqlalc_user'
pasw=user
host = 'hostname'

port = '1025'
# connect
td_engine = create_engine('teradata://'+ user +':' + pasw + '@'+ host + ':22/')

# execute sql
sql = 'select * from dbc.usersV'
result = td_engine.execute(sql)

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 2016-04-14
    • 2013-03-22
    • 2018-01-09
    • 1970-01-01
    • 2020-05-22
    • 2017-07-24
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多