首页 > 解决方案 > 使用 pyodbc & SQL Server,如何插入外键

问题描述

我有两个表,区域(ID,省,国家)和地址(地址1,地址2,城市,区域ID)。使用 pyodbc,我首先插入了我的 Region 表,没有任何问题。我现在正试图弄清楚如何在插入地址表期间插入 FK_RegionID。

这是功能代码,没有提到插入RegionID(相交部分是不​​允许插入重复行):

cursor.execute((""" 
    IF NOT EXISTS (
        SELECT @address1, @address2, @city
        INTERSECT
        SELECT address1, address2, city
        FROM dbo.Address)
    BEGIN
        INSERT INTO dbo.Address (address1, address2, city)
        VALUES (@address1, @address2, @city)
    END""")

理想情况下,我会在我的插入中添加一个查询,例如(SELECT RegionID FROM dbo.Region WHERE province=@province AND country=@country). 但是,这是行不通的。

    ...
    BEGIN
        INSERT INTO dbo.Address (address1, address2, city, RegionID)
        VALUES (@address1, @address2, @city, SELECT...WHERE...)
    END""")

我还看到可以使用fetchall(),但我不知道该怎么做,以及插入地址表需要多长时间。任何帮助表示赞赏。

标签: pythonsql-serverforeign-keyspyodbc

解决方案


Select 在 VALUES 子句中可能不起作用,但您可以将值添加到 SELECT 列表中,如下所示:

...
BEGIN
    INSERT INTO dbo.Address (address1, address2, city, RegionID)
    SELECT @address1, @address2, @city, RegionID 
    FROM dbo.Region
    WHERE province=@province AND country=@country)
END""")

推荐阅读