Несколько операторов CREATE в одной переменной в Python MySQL - PullRequest
0 голосов
/ 23 марта 2020

Мне нужно создать несколько таблиц в MySQL, и я написал это в Python. Я думал поместить его в одну переменную, подобную этой:

cursor = conn.cursor()

query = """
CREATE TABLE `A` (
  `a_col1` varchar(40) CHARACTER SET utf8 DEFAULT NULL,
  `a_col2` datetime(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `B` (
  `b_col1` varchar(20) NOT NULL,
  `b_col2` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `C` (
  `c_col1` varchar(50) DEFAULT NULL,
  `c_col2` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
"""
cursor.execute(query)

Но я сталкиваюсь с ошибкой: У вас есть ошибка в вашем синтаксисе SQL; обратитесь к руководству, соответствующему вашей MySQL версии сервера, чтобы узнать правильный синтаксис для использования рядом с 'CREATE TABLE B ... в строке 6'

Я что-то здесь упустил? Также я могу услышать некоторые предложения для лучшего подхода.

Спасибо!

1 Ответ

1 голос
/ 23 марта 2020

Вы просто должны использовать cursor.executemany вместо

см. Этот старый пост Python + MySQLdb executemany и документацию https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.html

...