用于创建数据库的Python代码

时间:2018-03-21 08:43:12

标签: python mysql

我正在尝试从.sql创建数据库 我的代码一旦成功完成测试就无效了。 即时通讯使用python 3.4和托管在谷歌云上的mysql 5.7

import mysql.connector

SCHEMA_PATH = 'mysql_schema.sql'
mysql_conn = mysql.connector.connect(
    user='X',
    password='X',
    host='X')
mysql_cursor = mysql_conn.cursor()
with open(SCHEMA_PATH, 'rt') as f:
    schema = f.read()
    mysql_cursor.execute(schema,multi=True)
    mysql_conn.close()

这是我的.sql

CREATE DATABASE `X`;

USE `X`;

CREATE TABLE `profile` (
      `id` int(11) AUTO_INCREMENT,
      `birth_date` date,
      `first_name` varchar(30),
      `last_name` varchar(30),
      `phone_number1` varchar(30),
      `phone_number2` varchar(30),
      `address_id` int(11) REFERENCES `address`(`id`),
      PRIMARY KEY (`id`),
    )ENGINE=InnoDB;

CREATE TABLE `address` (
      `id`    int(11)  AUTO_INCREMENT,
      `line1` varchar(100) DEFAULT '',
      `street` varchar(100) DEFAULT '',
      `suburb` varchar(100)  DEFAULT '',
      `postcode` varchar(100) DEFAULT '',
      `state` varchar(100) DEFAULT '',
      `country` varchar(100) DEFAULT 'Australia',
      PRIMARY KEY (`id`),
    )ENGINE=InnoDB;

quit

我设法找到一个解决方法。 如果我省略multi = True     mysql_cursor.execute(架构,多=真) 该程序将有一个错误但如果我放回multi = True并再次运行该程序它将再次工作一次。 所以试一试,除非它每次都有效。

try:
    mysql_cursor.execute(schema)
except Exception:
    mysql_cursor.execute(schema,multi=True)

但我仍然想知道导致这个问题的原因。

0 个答案:

没有答案