分类 "SQLAlchemy" 下的文章

问题:达梦库,sqlalchemy中非主键使用自增时,会报错

解决:在sqlalchemy中指定自增列为主键

方法:

class User(Base, BaseMixin):

__tablename__ = "YH"
# 使用mysql时,BH字段可以使用unique=True代替primary_key=True,
# 但达梦必须指定为primary_key=True,但建表时此字段还是唯一索引
BH = Column(Integer, primary_key=True, autoincrement=True)
BM = Column(String(19), nullable=False, primary_key=True)

问题:sqlalchemy新增数据到达梦,使用了synonym,使用了db.flush,但出现了代码新增的数据id与数据库新增的id不一致,导致新增数据完查询失败,报错:sqlalchemy.orm.exc.ObjectDeletedError: Instance '<College at 0x7fc16c5490d0>' has been deleted, or its row is otherwise not present

解决:直接删表,重新创建表,清除缓存可以使用db.refresh()代替db.flush()

问题:使用sqlalchemy连接hive进行创建表操作,当数据表已经存在时会报错,但无法获取具体信息

解决:使用try except捕捉异常信息

方法:

try:
    session.execute(sql)
except Exception as e:
    code = e.code
    tstatus = e.orig.args[0].status
    msg = tstatus.errorMessage

阅读全文

问题:使用pyhive连接后使用pandas会预警,让使用sqlalchemy

方法:

from sqlalchemy.engine import create_engine
from .config import config

database_config = { 
    'host': config['HV_SVR'],
    'port': 10000,
    'auth': "CUSTOM",
    'database': config['HV_DB'],
    'user': config['HV_USER'],
    'password': config['HV_PASS']
}

阅读全文