python - 对 SQLalchemy 结果的不合作的 For 循环进行故障排除
问题描述
在这里寻找第二双眼睛。我无法弄清楚为什么以下循环不会在第一次迭代之后继续。
'servicestocheck' sqlalchemy 查询在我的测试中返回 45 行,但我无法像预期的那样遍历结果......并且没有返回错误。所有功能都在第一次迭代中起作用。
有人有想法么?
def serviceAssociation(current_contact_id,perm_contact_id):
servicestocheck = oracleDB.query(PORTAL_CONTACT).filter(
PORTAL_CONTACT.contact_id == current_contact_id
).order_by(PORTAL_CONTACT.serviceID).count()
print(servicestocheck) # returns 45 items
servicestocheck = oracleDB.query(PORTAL_CONTACT).filter(
PORTAL_CONTACT.contact_id = current_contact_id
).order_by(PORTAL_CONTACT.serviceID).all()
for svc in servicestocheck:
#
# Check to see if already exists
#
check_existing_association = mysqlDB.query(
CONTACTTOSERVICE).filter(CONTACTTOSERVICE.contact_id ==
perm_contact_id,CONTACTTOSERVICE.serviceID ==
svc.serviceID).first()
#
# If no existing association
#
if check_existing_association is None:
print ("Prepare Association")
assoc_contact_id = perm_contact_id
assoc_serviceID = svc.serviceID
assoc_role_billing = False
assoc_role_technical = False
assoc_role_commercial = False
if svc.contact_type == 'Billing':
assoc_role_billing = True
if svc.contact_type == 'Technical':
assoc_role_technical = True
if svc.contact_type == 'Commercial':
assoc_role_commercial = True
try:
newAssociation = CONTACTTOSERVICE(
assoc_contact_id, assoc_serviceID,
assoc_role_billing,assoc_role_technical,
assoc_role_commercial)
mysqlDB.add(newAssociation)
mysqlDB.commit()
mysqlDB.flush()
except Exception as e:
print(e)
这个函数是从脚本调用的,它是从另一个循环中调用的。我找不到嵌套循环的任何问题。
解决方案
最终成为 SqlAlchemy ORM 的问题(请参阅SqlAlchemy 在查询表对象时不返回所有行,但在我查询表对象列时返回所有行)
我认为这个问题是由于我上面的一张表在现实生活中没有主键,添加一个假的也没有帮助。(我无权访问数据库来添加密钥)
而不是更进一步……我继续编写原始 SQL来推动我的项目。
这成功了:
query = 'SELECT * FROM PORTAL_CONTACT WHERE contact_id = ' + str(current_contact_id) + 'ORDER BY contact_id ASC'
servicestocheck = oracleDB.execute(query)
推荐阅读
- javascript - jQuery 代理没有得到正确的上下文
- java - 使用 hashCode 获取数组 java 元素的索引
- mysql - MySQL:如何访问在 Ubuntu 机器上的 docker 实例中运行的 MySQL 数据库
- angular - 定义后直接订阅服务中的可观察对象
- java - 如何在 Windows 下翻译 JFileChooser 列标题?
- javascript - 在 Javascript 中使用 google 服务帐户 json 文件是否安全?
- ios - UICollectionView 单元格幻影动画
- java - 由于 org.springframework.dao.DataIntegrityViolationException 导致同步失败
- c# - 选择不同的 DataTable 行
- webpack - 无法让 PostCSS 与 Webpack 一起使用