Здравствуйте.
Никогда до сих пор не писал никаких сложных запросов на сыром 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")
Попробуйте так:
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)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
К примеру, у меня есть таблица звонков с полями "номер телефона" и "статус":
Имеется небольшое приложение, написанное с помощью JavaFX и FXMLВ нем добавляются поля в listView