• <tfoot id='MDmLp'></tfoot>
  • <legend id='MDmLp'><style id='MDmLp'><dir id='MDmLp'><q id='MDmLp'></q></dir></style></legend>

    1. <i id='MDmLp'><tr id='MDmLp'><dt id='MDmLp'><q id='MDmLp'><span id='MDmLp'><b id='MDmLp'><form id='MDmLp'><ins id='MDmLp'></ins><ul id='MDmLp'></ul><sub id='MDmLp'></sub></form><legend id='MDmLp'></legend><bdo id='MDmLp'><pre id='MDmLp'><center id='MDmLp'></center></pre></bdo></b><th id='MDmLp'></th></span></q></dt></tr></i><div id='MDmLp'><tfoot id='MDmLp'></tfoot><dl id='MDmLp'><fieldset id='MDmLp'></fieldset></dl></div>
          <bdo id='MDmLp'></bdo><ul id='MDmLp'></ul>

      1. <small id='MDmLp'></small><noframes id='MDmLp'>

        使用 Teradata 模块将 Python 与 Teradata 连接

        时间:2023-10-18
      2. <i id='dsLe9'><tr id='dsLe9'><dt id='dsLe9'><q id='dsLe9'><span id='dsLe9'><b id='dsLe9'><form id='dsLe9'><ins id='dsLe9'></ins><ul id='dsLe9'></ul><sub id='dsLe9'></sub></form><legend id='dsLe9'></legend><bdo id='dsLe9'><pre id='dsLe9'><center id='dsLe9'></center></pre></bdo></b><th id='dsLe9'></th></span></q></dt></tr></i><div id='dsLe9'><tfoot id='dsLe9'></tfoot><dl id='dsLe9'><fieldset id='dsLe9'></fieldset></dl></div>

          <tbody id='dsLe9'></tbody>
          <bdo id='dsLe9'></bdo><ul id='dsLe9'></ul>
                • <small id='dsLe9'></small><noframes id='dsLe9'>

                  <tfoot id='dsLe9'></tfoot><legend id='dsLe9'><style id='dsLe9'><dir id='dsLe9'><q id='dsLe9'></q></dir></style></legend>

                  本文介绍了使用 Teradata 模块将 Python 与 Teradata 连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我在 Windows 7 上安装了 python 2.7.0 和 Teradata 模块.我无法从 python 连接和查询 TD.

                  pip install Teradata

                  现在我想在我的源代码中导入 teradata 模块并执行如下操作 -

                  1. 向 teradata 发起查询并获取结果集.
                  2. 检查是否已连接到 teradata.

                  请帮我编写代码,因为我是 Python 新手,我没有可用的信息来连接到 teradata.

                  解决方案

                  有多种方法可以连接到 Teradata 并将表导出到 Pandas.这里有四个+:

                  使用 teradata 模块

                  # 可以通过 PIP 安装 teradata:pip install teradata# 要获取您的 odbc 驱动程序名称列表,您可以执行以下操作:teradata.tdodbc.drivers# 如果使用 method='rest',则无需安装 teradata odbc 驱动程序.# 有关连接示例,请参见从 df 向 teradata 发送数据导入 teradata将熊猫导入为 pd主机,用户名,密码 = 'HOST','UID','PWD'#建立连接udaExec = teradata.UdaExec (appName="test", version="1.0", logConsole=False)使用 udaExec.connect(method="odbc",system=host, username=username,密码=密码,驱动程序=驱动程序名称")作为连接:查询 = 选择 * 从 DATABASEX.TABLENAMEX;"#读取查询到dfdf = pd.read_sql(查询,连接)# 用 df 做一些事情,例如print(df.head()) #查看前5行

                  使用 TeradataSQL

                  <块引用>

                  来自@ymzkala:此软件包不需要您安装 Teradata 驱动程序(此软件包除外).

                  # 安装 python -m pip install teradatasql导入 teradatasql使用 teradatasql.connect(host='host', user='username', password='password') 作为连接:df = pd.read_sql(查询,连接)

                  使用pyodbc模块

                  导入pyodbc#可以通过PIP安装teradata:pip install pyodbc#要获取您的 odbc 驱动程序名称列表,您可以执行以下操作: pyodbc.drivers()#建立连接链接='驱动程序={驱动程序名称};DBCNAME={主机名};UID={uid};PWD={pwd}'.format(驱动程序名=驱动程序名,主机名=主机名,uid=用户名,pwd=密码)使用 pyodbc.connect(link,autocommit=True) 作为连接:#读取查询到dfdf = pd.read_sql(查询,连接)

                  使用 sqlalchemy 模块

                   #可以通过PIP安装sqlalchemy:pip install sqlalchemy-teradata#注意:不是 pip install sqlalchemy.如果你已经有 sqlalchemy,你仍然需要 sqlalchemy-teradata 来获取 teradata 方言从 sqlalchemy 导入 create_engine#建立连接链接 = 'teradata://{username}:{password}@{hostname}/?driver={DRIVERNAME}'.format(用户名=用户名,主机名=主机名,驱动程序名=驱动程序名)使用 create_engine(link) 作为连接:#读取查询到dfdf = pd.read_sql(查询,连接)

                  还有第五种方式,使用 giraffez 模块.我喜欢使用这个模块,因为它带有 MLOAD、FASTLOAD、BULKEXPORT 等.对于初学者来说唯一的问题是它的要求(例如 C/C++ 编译器、Teradata CLIv2 和 TPT API 头文件/lib 文件).

                  注意:2018 年 7 月 13 日更新,使用上下文管理器确保会话关闭

                  更新:31-10-2018:使用 teradata 将数据从 df 发送到 teradata

                  我们可以将数据从 df 发送到 Teradata.避免 'odbc' 1 MB 限制和 odbc 驱动程序依赖,我们可以使用 'rest' 方法.我们需要主机 ip_address,而不是驱动程序参数.注意: df 中的列顺序应与 Teradata 表中的列顺序一致.

                  导入 teradata将熊猫导入为 pd# HOST_IP 可以通过执行 *>>nslookup 视点* 或 *ping 视点* 找到udaExec = teradata.UdaExec (appName="test", version="1.0", logConsole=False)使用 udaExec.connect(method="rest",system="DBName", username="UserName",password="Password", host="HOST_IP_ADDRESS") 作为连接:data = [df.to_records(index=False) 中 x 的元组 (x)]connect.executemany("INSERT INTO DATABASE.TABLEWITH5COL 值(?,?,?,?,?)",data,batch=True)

                  使用odbc",您必须将数据分块为小于 1MB 的块,以避免[HY001][Teradata][ODBC Teradata Driver] 内存分配错误"错误:例如

                  导入 teradata将熊猫导入为 pd将 numpy 导入为 npudaExec = teradata.UdaExec (appName="test", version="1.0", logConsole=False)使用 udaExec.connect(method="odbc",system="DBName", username="UserName",password="Password", driver="DriverName") 作为连接:#我们可以将我们的huge_df分成小块.例如.100 座教堂chunks_df = np.array_split(huge_df, 100)#将块导入 Teradata对于 i,_ in enumerate(chunks_df):data = [tuple(x) for x in chuncks_df[i].to_records(index=False)]connect.executemany("INSERT INTO DATABASE.TABLEWITH5COL 值(?,?,?,?,?)",data,batch=True)

                  I have installed python 2.7.0 and Teradata module on Windows 7. I am not able to connect and query TD from python.

                  pip install Teradata

                  Now I want to import teradata module in my source code and perform operations like -

                  1. Firing queries to teradata and get result set.
                  2. Check if connection is made to teradata.

                  Please help me writing code for the same as I am new to Python and there is no information available with me to connect to teradata.

                  解决方案

                  There are a number of ways to connect to Teradata and export table to Pandas. Here are four+:

                  Using teradata module

                  # You can install teradata via PIP: pip install teradata
                  # to get a list of your odbc drivers names, you could do: teradata.tdodbc.drivers
                  # You don’t need to install teradata odbc driver if using method='rest'.     
                  # See sending data from df to teradata for connection example 
                  
                  import teradata
                  import pandas as pd
                  
                  host,username,password = 'HOST','UID', 'PWD'
                  #Make a connection
                  udaExec = teradata.UdaExec (appName="test", version="1.0", logConsole=False)
                  
                  
                  with udaExec.connect(method="odbc",system=host, username=username,
                                              password=password, driver="DRIVERNAME") as connect:
                  
                      query = "SELECT * FROM DATABASEX.TABLENAMEX;"
                  
                      #Reading query to df
                      df = pd.read_sql(query,connect)
                      # do something with df,e.g.
                      print(df.head()) #to see the first 5 rows
                  

                  Using TeradataSQL

                  from @ymzkala : This package doesn't require you to install Teradata drivers (other than this package).

                  # Installing python -m pip install teradatasql
                  
                  import teradatasql
                  
                  with teradatasql.connect(host='host', user='username', password='password') as connect:
                      df = pd.read_sql(query, connect)
                  

                  Using pyodbc module

                  import pyodbc
                  
                   #You can install teradata via PIP: pip install pyodbc
                   #to get a list of your odbc drivers names, you could do: pyodbc.drivers()
                  
                  #Make a connection
                  link = 'DRIVER={DRIVERNAME};DBCNAME={hostname};UID={uid};PWD={pwd}'.format(
                                        DRIVERNAME=DRIVERNAME,hostname=hostname,  
                                        uid=username, pwd=password)
                  with pyodbc.connect(link,autocommit=True) as connect:
                  
                      #Reading query to df
                      df = pd.read_sql(query,connect)
                  

                  Using sqlalchemy Module

                   #You can install sqlalchemy via PIP: pip install sqlalchemy-teradata
                   #Note: It is not pip install sqlalchemy. If you already have sqlalchemy, you still need sqlalchemy-teradata to get teradata dialects
                  
                  from sqlalchemy import create_engine
                  
                  #Make a connection
                  
                  link = 'teradata://{username}:{password}@{hostname}/?driver={DRIVERNAME}'.format(
                                 username=username,hostname=hostname,DRIVERNAME=DRIVERNAME)
                  
                  with create_engine(link) as connect:
                  
                      #Reading query to df
                      df = pd.read_sql(query,connect)
                  

                  There is a fifth way, using giraffez module. I enjoy using this module as it come with MLOAD, FASTLOAD, BULKEXPORT etc. The only issue for beginners is its requirements (e.g C/C++ compiler ,Teradata CLIv2 and TPT API headers/lib files).

                  Note: Updated 13-07-2018, using of context manager to ensure closing of sessions

                  Update: 31-10-2018: Using teradata to send data from df to teradata

                  We can send data from df to Teradata. Avoiding 'odbc' 1 MB limit and odbc driver dependency, we can use 'rest' method. We need host ip_address, instead of driver argument. NB: The order of columns in df should match the order of columns in Teradata table.

                  import teradata
                  import pandas as pd
                  
                  # HOST_IP can be found by executing *>>nslookup viewpoint* or *ping  viewpoint* 
                  udaExec = teradata.UdaExec (appName="test", version="1.0", logConsole=False) 
                  with udaExec.connect(method="rest",system="DBName", username="UserName",
                                        password="Password", host="HOST_IP_ADDRESS") as connect:
                  
                      data = [tuple(x) for x in df.to_records(index=False)]
                  
                      connect.executemany("INSERT INTO DATABASE.TABLEWITH5COL values(?,?,?,?,?)",data,batch=True)
                  

                  Using 'odbc', you have to chunk your data to less than 1MB chunks to avoid "[HY001][Teradata][ODBC Teradata Driver] Memory allocation error" error: E.g.

                  import teradata
                  import pandas as pd
                  import numpy as np
                  
                  udaExec = teradata.UdaExec (appName="test", version="1.0", logConsole=False)
                  
                  with udaExec.connect(method="odbc",system="DBName", username="UserName",
                                        password="Password", driver="DriverName") as connect:
                  
                      #We can divide our huge_df to small chuncks. E.g. 100 churchs
                      chunks_df = np.array_split(huge_df, 100)
                  
                      #Import chuncks to Teradata
                      for i,_ in enumerate(chunks_df):
                  
                          data = [tuple(x) for x in chuncks_df[i].to_records(index=False)]
                          connect.executemany("INSERT INTO DATABASE.TABLEWITH5COL values(?,?,?,?,?)",data,batch=True)
                  

                  这篇关于使用 Teradata 模块将 Python 与 Teradata 连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:从 Python 管理与 redis 的连接 下一篇:如何绕过消息-“您的连接不是私密的"在使用 Selenium 的非安全页面上?

                  相关文章

                • <legend id='XmZ8w'><style id='XmZ8w'><dir id='XmZ8w'><q id='XmZ8w'></q></dir></style></legend>
                    <bdo id='XmZ8w'></bdo><ul id='XmZ8w'></ul>

                    <i id='XmZ8w'><tr id='XmZ8w'><dt id='XmZ8w'><q id='XmZ8w'><span id='XmZ8w'><b id='XmZ8w'><form id='XmZ8w'><ins id='XmZ8w'></ins><ul id='XmZ8w'></ul><sub id='XmZ8w'></sub></form><legend id='XmZ8w'></legend><bdo id='XmZ8w'><pre id='XmZ8w'><center id='XmZ8w'></center></pre></bdo></b><th id='XmZ8w'></th></span></q></dt></tr></i><div id='XmZ8w'><tfoot id='XmZ8w'></tfoot><dl id='XmZ8w'><fieldset id='XmZ8w'></fieldset></dl></div>

                    <small id='XmZ8w'></small><noframes id='XmZ8w'>

                  1. <tfoot id='XmZ8w'></tfoot>