SQLAlchemy(HANA)获取数组列类型时触发TypeError错误
解决SQLAlchemy操作HANA数组列时的TypeError问题
错误原因
HANA数据库的Array类型在SQLAlchemy中必须指定元素类型(item_type),你直接调用coltype()(此处coltype对应Array类)实例化时,未传入这个必填的位置参数,因此触发TypeError: __init__() 缺少1个必需的位置参数:'item_type'错误。
解决方法
- 明确Array类型的正确用法:实例化时必须传入数组存储的元素类型作为第一个参数,比如整数数组用
Array(Integer)、字符串数组用Array(String),具体类型需匹配数据库列的实际元素类型。 - 修改出错代码:
原错误代码:
改为(以整数数组为例):col_def["type"] = coltype()
若是动态获取元素类型,需先拿到对应的类型对象,再传递给Array构造函数。from sqlalchemy import Integer from sqlalchemy.dialects.hana import Array col_def["type"] = Array(Integer) - 表定义示例:
在HANA中定义数组列的正确写法如下:from sqlalchemy import Column, Integer, String from sqlalchemy.dialects.hana import Array from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class MyTable(Base): __tablename__ = 'my_table' id = Column(Integer, primary_key=True) integer_array = Column(Array(Integer)) # 元素类型为整数 string_array = Column(Array(String(50))) # 元素类型为长度50的字符串
内容的提问来源于stack exchange,提问作者Nitin Varghese
相关产品推荐
相关产品推荐

