我try 运行一些查询/存储过程,这些查询/存储过程将返回一个长文本(varchar2/clob),例如:表/视图/等等ddl.将获取长文本,进行一些操作(&存储在平面文件中.

我得到以下输出,这是整个事件的截断版本(突出显示):

("DROP VIEW <<view>>;\n\n/* Formatted on 27/05/2022 7:08:33 PM (QP5 v5.354) */\nCREATE OR REPLACE FORCE 
VIEW <<view>> ... **(1097 characters truncated)** ... tx', '<<some value>>'),\n                                     'YYYYMMDD');
\n\n\nGRANT <<rights>>> ON <<view>> TO <<user>>;\n",)

我正在使用以下代码:

conn_db = create_engine('oracle://<<user>>:<<pass>>@<<db_service>>')`
with conn_db.connect() as connection:
    res = connection.execute("<<query/proc>>")
    for row in res:
        print(row) # this returns the above output

我try 在创建引擎时设置数组大小,但没有成功.

推荐答案

print(row)正在截断字符串以用于显示.实际字符串不受影响:

import sqlalchemy as sa

engine = sa.create_engine("oracle+cx_oracle://scott:tiger@192.168.0.199/?service_name=xepdb1")

s = " ".join(["spam" for i in range(200)])
with engine.connect() as conn:
    row = conn.exec_driver_sql("SELECT :s AS spam FROM DUAL", {"s": s}).one()
    print(row)
    # ('spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam ... (701 characters truncated) ... spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam',)
    #
    # [scroll right to see "... (701 characters truncated) ..."]
    #
    spam = row.spam
    print(len(spam))  # 999
    print(spam)
    # spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam spam

Python-3.x相关问答推荐

如何创建一个polars gramme,给出列表中的列名,

Paramiko SFTPClient get()和put()函数的通过/失败结果?

在Python中从列创建新行

Pandas 插入的速度太慢了.对于跟踪代码,什么是更快的替代方案?

当条件第一次出现时将行标记为True,如果按顺序重复则标记为False

如何使用 Selenium Python 连续单击一个按钮直到另一个元素出现?

torch.stack([t1, t1, t1], dim=1)与torch.hstack([t1, t1, t1])之间有什么区别?

在REPLACE INTO中引用变量会抛出sqlite3.OperationalError

TypeError: issubclass() arg 1 在 Flask 中导入 langchain 时必须是一个类

一起使用数据类和枚举

提高时间复杂度的一些建议

在字符串中查找正则表达式的所有模式

`pyspark mllib` 与 `pyspark ml` 包

为什么 f-strings 比 str() 更快地解析值?

参数化泛型不能与类或实例判断一起使用

sys.stdin.readline() 和 input():读取输入行时哪个更快,为什么?

tensorflow 中 numpy.newaxis 的替代方案是什么?

如何通过命令行将数组传递给python

用于 Django 应用程序的 Cython:它会工作吗?

如何将python日志(log)级别名称转换为整数代码