mysql程序员_MySQL程序员篇-python

创建数据库和表

from __future__ import print_function

import mysql.connector

from mysql.connector import errorcode

DB_NAME = 'employees'

TABLES = {}

TABLES['employees'] = (

"CREATE TABLE `employees` ("

"  `emp_no` int(11) NOT NULL AUTO_INCREMENT,"

"  `birth_date` date NOT NULL,"

"  `first_name` varchar(14) NOT NULL,"

"  `last_name` varchar(16) NOT NULL,"

"  `gender` enum('M','F') NOT NULL,"

"  `hire_date` date NOT NULL,"

"  PRIMARY KEY (`emp_no`)"

") ENGINE=InnoDB")

TABLES['departments'] = (

"CREATE TABLE `departments` ("

"  `dept_no` char(4) NOT NULL,"

"  `dept_name` varchar(40) NOT NULL,"

"  PRIMARY KEY (`dept_no`), UNIQUE KEY `dept_name` (`dept_name`)"

") ENGINE=InnoDB")

TABLES['salaries'] = (

"CREATE TABLE `salaries` ("

"  `emp_no` int(11) NOT NULL,"

"  `salary` int(11) NOT NULL,"

"  `from_date` date NOT NULL,"

"  `to_date` date NOT NULL,"

"  PRIMARY KEY (`emp_no`,`from_date`), KEY `emp_no` (`emp_no`),"

"  CONSTRAINT `salaries_ibfk_1` FOREIGN KEY (`emp_no`) "

"     REFERENCES `employees` (`emp_no`) ON DELETE CASCADE"

") ENGINE=InnoDB")

TABLES['dept_emp'] = (

"CREATE TABLE `dept_emp` ("

"  `emp_no` int(11) NOT NULL,"

"  `dept_no` char(4) NOT NULL,"

"  `from_date` date NOT NULL,"

"  `to_date` date NOT NULL,"

"  PRIMARY KEY (`emp_no`,`dept_no`), KEY `emp_no` (`emp_no`),"

"  KEY `dept_no` (`dept_no`),"

"  CONSTRAINT `dept_emp_ibfk_1` FOREIGN KEY (`emp_no`) "

"     REFERENCES `employees` (`emp_no`) ON DELETE CASCADE,"

"  CONSTRAINT `dept_emp_ibfk_2` FOREIGN KEY (`dept_no`) "

"     REFERENCES `departments` (`dept_no`) ON DELETE CASCADE"

") ENGINE=InnoDB")

TABLES['dept_manager'] = (

"  CREATE TABLE `dept_manager` ("

"  `dept_no` char(4) NOT NULL,"

"  `emp_no` int(11) NOT NULL,"

"  `from_date` date NOT NULL,"

"  `to_date` date NOT NULL,"

"  PRIMARY KEY (`emp_no`,`dept_no`),"

"  KEY `emp_no` (`emp_no`),"

"  KEY `dept_no` (`dept_no`),"

"  CONSTRAINT `dept_manager_ibfk_1` FOREIGN KEY (`emp_no`) "

"     REFERENCES `employees` (`emp_no`) ON DELETE CASCADE,"

"  CONSTRAINT `dept_manager_ibfk_2` FOREIGN KEY (`dept_no`) "

"     REFERENCES `departments` (`dept_no`) ON DELETE CASCADE"

") ENGINE=InnoDB")

TABLES['titles'] = (

"CREATE TABLE `titles` ("

"  `emp_no` int(11) NOT NULL,"

"  `title` varchar(50) NOT NULL,"

"  `from_date` date NOT NULL,"

"  `to_date` date DEFAULT NULL,"

"  PRIMARY KEY (`emp_no`,`title`,`from_date`), KEY `emp_no` (`emp_no`),"

"  CONSTRAINT `titles_ibfk_1` FOREIGN KEY (`emp_no`)"

"     REFERENCES `employees` (`emp_no`) ON DELETE CASCADE"

") ENGINE=InnoDB")

cnx = mysql.connector.connect(user='scott')

cursor = cnx.cursor()

def create_database(cursor):

try:

cursor.execute(

"CREATE DATABASE {} DEFAULT CHARACTER SET 'utf8'".format(DB_NAME))

except mysql.connector.Error as err:

print("Failed creating database: {}".format(err))

exit(1)

try:

cnx.database = DB_NAME

except mysql.connector.Error as err:

if err.errno == errorcode.ER_BAD_DB_ERROR:

create_database(cursor)

cnx.database = DB_NAME

else:

print(err)

exit(1)

for name, ddl in TABLES.iteritems():

try:

print("Creating table {}: ".format(name), end='')

cursor.execute(ddl)

except mysql.connector.Error as err:

if err.errno == errorcode.ER_TABLE_EXISTS_ERROR:

print("already exists.")

else:

print(err.msg)

else:

print("OK")

cursor.close()

cnx.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值