SQLAlchemy / Python / Pyramid写入数据库问题

时间:2013-04-25 03:41:36

标签: python database sqlalchemy pyramid

问题:

我正在研究一些用于在链接表中创建新记录的代码。链接表的主键是一个自动编号,另外两个字段是VARCHAR,长度为10。

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

我试过去投了它,我试过不同的方法从数据库中提取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

如果对此问题有任何想法或意见,我将不胜感激

感谢您的时间

1 个答案:

答案 0 :(得分: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{}

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

祝你好运,