Составной оператор SQL INSERT - PullRequest
1 голос
/ 23 января 2012

Как бы я скомбинировал следующие два оператора для создания правильного запроса SQL?

provider = os.path.basename(file)

cursor.execute("""INSERT into main_app_financialstatements 
                  (statement_id, provider_id***, url, date) 
                  VALUES (%s, %s***, %s, %s)""", 
                  (statement_id, provider***, url, date))

provider_id = SELECT id FROM main_app_provider WHERE provider=provider

Другими словами, у меня есть провайдер, и мне нужно выбрать provider_id из другой таблицы, чтобы вставить его в main_app_financialstatements.

Ответы [ 2 ]

1 голос
/ 23 января 2012

Вы можете использовать вариант INSERT ... SELECT ... FROM команды INSERT :

provider = os.path.basename(file)

sql = """
    INSERT INTO main_app_financialstatements 
        (statement_id, provider_id, url, date)
    SELECT %s, id, %s, %s
    FROM main_app_provider
    WHERE provider = %s
    """ 
args = (statement_id, url, date, provider)
cursor.execute(sql, args)
1 голос
/ 23 января 2012
cursor.execute("""INSERT into main_app_financialstatements
  (statement_id, provider_id, url, date)
VALUES (%s, (SELECT id FROM main_app_provider WHERE provider=%s), %s, %s)""",
  (statement_id, provider, url, date))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...