0

问题:

我正在编写一些旨在在链接表中创建新记录的代码。链接表的主键是自动编号,其他两个字段是长度为 10 的 VARCHAR。

我遇到的问题是我似乎无法将 partID 放入表中。如果您查看 sql 输出,您可以清楚地看到它在表中写入了 None 和 u'1'(orderID)。所以这告诉我它接收到 orderID 就好了。您还可以看到,在将变量传递给新对象之前,我进行了打印以找出变量内部的内容。它有 3 个,这是正确的 partId。在创建新对象和写入表之间的某个地方,它传递了一个空值。

我尝试过强制转换,尝试过从数据库中提取 partID 的不同方法,等等,但我终其一生都无法弄清楚出了什么问题。

编码:

def updateOrderParts_view(request):
    part = None
    partToOrder = None
    idnum = None

    part = DBSession.execute(\
    "SELECT partID "+\
    "FROM tblParts "+\
    "WHERE partName = " + "'" +request.POST['partName'] +"'").fetchone()

    print "<---DEBUG--->"
    print part['partID']

    partToOrder = PartsByOrder(part['partID'], request.POST['orderID'])

    DBSession.add(partToOrder)
    return{}

终端输出:

<---DEBUG--->
3
2013-04-24 08:14:47,985 INFO  [sqlalchemy.engine.base.Engine][Dummy-2] INSERT INTO "tblPartsByOrder" ("partID", "orderID") VALUES (?, ?)
2013-04-24 08:14:47,985 INFO  [sqlalchemy.engine.base.Engine][Dummy-2] (None, u'1')
2013-04-24 08:14:47,986 INFO  [sqlalchemy.engine.base.Engine][Dummy-2] COMMIT

我将不胜感激有关此问题的任何想法或意见

谢谢你的时间

4

1 回答 1

1

首先,如果可以的话,我会考虑做一些不同的 SQL 查找。(我想这取决于,你有一个基于“tblParts”的模型吗?我将使用一个假设有一个模型对象“Part”的例子):

part = DBSession.query(Part.partID).filter(Part.partName == request.POST['partName']).first()

从那里,我对确切的语法生疏了,但我认为你可以做类似的事情

print "<---DEBUG--->"
print part

partToOrder = PartsByOrder(part, request.POST['orderID'])

DBSession.add(partToOrder)

return{}

str(part)如果是转换问题,您可能需要将“part”转换为字符串 ( )。

祝你好运,

于 2013-04-26T17:11:01.640 回答