簡體   English   中英

pygrametl KeyError將數據從一個表加載到另一表時

[英]pygrametl KeyError when loading data from one to another table

我正在嘗試pygrametl,試圖將數據從數據庫(源)中的一個表獲取到目標數據庫中的另一個表中。

源表具有以下架構:

CREATE TABLE `sdata` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fname` varchar(255) DEFAULT NULL,
  `descr` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT=' ';

目標表使用以下架構:

CREATE TABLE `dtable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `dname` varchar(255) DEFAULT NULL,
  `ddescr` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在python中,我有以下代碼:

import pygrametl
from pygrametl.datasources import SQLSource, CSVSource
from pygrametl.tables import Dimension, FactTable, SlowlyChangingDimension
import pymysql

sourceDatabase = pymysql.connect(host='localhost', user='root', password='pass', database='source')
destDatabase = pymysql.connect(host='localhost', user='root', password='pass', database='dest')

dw_conn_wrapper = pygrametl.ConnectionWrapper(connection=destDatabase)

sql = "SELECT fname, descr from sdata"

name_mapping = 'fname', 'descr'

source = SQLSource(connection=sourceDatabase, query=sql, names=name_mapping)

destDimension = Dimension(
    name='dtable',
    key='id',
    attributes=['dname', 'ddescr'])

for row in source:
    print(row)
    destDimension.insert(row)

dw_conn_wrapper.commit()
dw_conn_wrapper.close()

sourceDatabase.close()

我收到的錯誤如下:

追溯(最近一次通話):sourceDimension.insert(row)中的文件“。\\ testex.py”,第35行,文件“ Python \\ Python36-32 \\ lib \\ site-packages \\ pygrametl \\ tables.py”,行357 ,插入self.targetconnection.execute(self.insertsql,row,namemapping)文件“ Python \\ Python36-32 \\ lib \\ site-packages \\ pygrametl__init __。py”中的第63行,執行self .__ cursor.execute(stmt,arguments) )執行查詢= self.mogrify(query,args)中的文件“ Python \\ Python36-32 \\ lib \\ site-packages \\ pymysql \\ cursors.py”,第164行文件“ Python \\ Python36-32 \\ lib \\ site-packages \\ pymysql \\ cursors.py“,行143,在進行遷移查詢=查詢%self._escape_args(args,conn)KeyError:'dname'

您的屬性應該在查詢產生的數據中。 您可以使用以下任一方法:

name_mapping = 'dname', 'ddescr'
attributes=['dname', 'ddescr'])

要么:

name_mapping = 'fname', 'descr'
attributes=['fname', 'descr'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM