0

我有这组 python 脚本,我在其中执行 API 调用,将生成的 df 合并在一起,然后输出到 Oracle db 中的表。这个确切的脚本在其他三个配置相同的脚本中运行良好,除了不同的 API,但是在这个特定的脚本中,这个错误被抛出。我阅读了绑定,但我看不出我是如何错误地为元组做的。在此先感谢您的时间。

sf_joined = pd.merge(sf_opp, sf_account,on=["CustID","CustID"])
    # sf_joined.to_csv('sf_joined.csv', index=False)
    
    # sf_types = sf_joined.dtypes
    # print(sf_types)
    
    char_columns = sf_joined.select_dtypes(include=['object']).columns
    
    for col in char_columns:
        if col not in  ['rundate','Amount','Estimated_GC','Probability','MDC','DaysOpen']:
            sf_joined[col] = sf_joined[col].fillna('')
            # sf_joined[col] = sf_joined[col].map(lambda x: x.encode('utf-8'))
            sf_joined[col] = sf_joined[col].map(lambda x: x[:1000])
    
    pw = '****'
    db_con = cx_Oracle.connect('mktg', pw, "prd-bia-db-***.o******.com:1521/BIPRD", encoding = "UTF-8", nencoding = "UTF-8")
    cur = db_con.cursor()
    print(db_con.version)
    
    
    cur.execute('drop table cs_salesforce')
    create_opps = """create table cs_salesforce(
        rundate date,
        sfoppid varchar(500)
    )
    """
    cur.execute(create_opps)
    
    all_opps = []
    
    for x in sf_joined.itertuples():
        all_opps.append(x[1:])
    insert_statement = """insert into cs_salesforce(rundate,sfoppid)values(:1, :2)"""
    
    cur.executemany(insert_statement, all_opps)
    db_con.commit()

错误:

runfile('C:/python_scripts_prod/cs_salesforce.py', wdir='C:/python_scripts_prod')
18.3.0.0.0
Traceback (most recent call last):

  File "C:\python_scripts_prod\cs_salesforce.py", line 163, in <module>
    cur.executemany(insert_statement, all_opps)

DatabaseError: ORA-01036: illegal variable name/number
4

0 回答 0