Почему я получаю эту ошибку: повторяющееся имя столбца? - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь динамически создать две таблицы (учетная запись, актив), запрашивая результаты таблицы метаданных, в которой хранятся имя таблицы, поля и тип (тип данных) каждой таблицы. Таким образом, мои выходные данные должны быть двумя таблицами (счет и актив) с соответствующими полями и типами данных в операторе создания. Когда я запускаю мой код ниже, я получаю сообщение об ошибке.

Вот stockssd (таблица метаданных), в которой хранятся метаданные: enter image description here

Вот мой код:

from simple_salesforce import Salesforce, SFType, SalesforceLogin
from pandas import DataFrame, read_csv
import json
import pandas as pd
from pprint import pprint as pp
import time
from sqlalchemy import create_engine
import config
import logging


def sf_login():
    """
    Purpose: This function is designed to validate your Salesforce credentials and create/return an instance or session.
    Note: If we have already signed in, this will just return the original object.
    Note: The credentials are being held inside of the config.py file.
    """

    session_id, instance = SalesforceLogin(username=config.username,
                                               password=config.password,
                                               security_token=config.security_token)

    sf_conn = Salesforce(instance=instance,
                        session_id=session_id)

    return sf_conn

def get_sf_metadata():
    import sqlite3

    #Tables I want to be dynamiclly created
    table_names=['account','asset']

    #SQLIte Connection
    conn = sqlite3.connect('example.db')
    c = conn.cursor()
    c.execute('select * from stockssd')
    query_result = [ dict(line) for line in [zip([ column[0] for column in c.description], row) for row in c.fetchall()] ]

    #For loop to create 2 tables called account and asset and pass the name and type in the record into the create statement
    for record in query_result:
        for objects in table_names:
            if objects == record['object']:
                c.execute('''CREATE TABLE {0}
                                ({1} {2}, {1} {2}, {1} {2})'''.format(objects, record['name'],record['type']))
    #c.execute('select * from {}'.format(x['object']))

get_sf_metadata()

Вот сообщение об ошибке, которое я получаю: enter image description here

Любые идеи или предложения, как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...