python mysql сырой запрос

296
24 августа 2017, 20:08

Здравствуйте.

Никогда до сих пор не писал никаких сложных запросов на сыром SQL, пользовался преимущественно ORM.

Есть такая таблица:

DROP TABLE IF EXISTS `score108_bettingoffer`;
CREATE TABLE `score108_bettingoffer` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `eventFK` int(10) unsigned NOT NULL,
  `home_odd` double DEFAULT NULL,
  `away_odd` double DEFAULT NULL,
  `over_odd` double DEFAULT NULL,
  `under_odd` double DEFAULT NULL,
  `hdp` varchar(255) DEFAULT NULL,
  `ou` varchar(255) DEFAULT NULL,
  `active` enum('no','yes') CHARACTER SET latin1 NOT NULL,
  `is_live` enum('yes','no') NOT NULL DEFAULT 'no',
  `del` enum('no','yes') CHARACTER SET latin1 NOT NULL DEFAULT 'no',
  `n` int(10) unsigned NOT NULL,
  `ut` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `event_provider` (`eventFK`) USING BTREE,
  KEY `ut_idx` (`ut`),
  KEY `del_idx` (`del`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

И задача стоит, проверить, есть ли запись с такими значениями, и если есть, то изменить один active на no.

Я пробую так:

query2 = ("INSERT INTO bet.score108_bettingoffer (eventFK, active)"
        "VALUES (%s, %s)" 
        "ON DUPLICATE KEY UPDATE active = 'no";)

Но получаю ошибку:

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%s)' at line 1")
Answer 1

Попробуйте так:

con = engine.connect()
query2 = ("INSERT INTO bet.score108_bettingoffer (eventFK, active)"
        "VALUES (?, ?)" 
        "ON DUPLICATE KEY UPDATE active = 'no";)
parms = (11111, 'yes')  # eventFK=11111, acive='yes'
con.execute(query2, params=parms)
READ ALSO
Количество одинаковых строк в столбце

Количество одинаковых строк в столбце

К примеру, у меня есть таблица звонков с полями "номер телефона" и "статус":

245
Как лучше установить связи?

Как лучше установить связи?

Есть образецОбразец может поступить от разных лабораторий

265
Сохранение формы JavaFX

Сохранение формы JavaFX

Имеется небольшое приложение, написанное с помощью JavaFX и FXMLВ нем добавляются поля в listView

329
В чем ошибка? Java [дубликат]

В чем ошибка? Java [дубликат]

Данный вопрос уже был задан и имеет решение:

320