{ "metadata": { "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6-final" }, "orig_nbformat": 2, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "nbformat": 4, "nbformat_minor": 2, "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Common Usage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connect to DB" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext sql" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%sql mysql+mysqlconnector://root:root@localhost:3306" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Database Management" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n6 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('information_schema',),\n ('mysql',),\n ('performance_schema',),\n ('sakila',),\n ('sys',),\n ('world',)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Database
information_schema
mysql
performance_schema
sakila
sys
world
" }, "metadata": {}, "execution_count": 5 } ], "source": [ "%%sql\n", "SHOW databases;" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n6 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('%', 'admin', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'caching_sha2_password', '$A$005$0s\\x1a\\x12%|\\x0f<&t./k:}p P{tpIir.lyQtoJbD1IqQv1wz3joWKjUWZmmz2e8Prn7fW.', 'N', datetime.datetime(2020, 5, 27, 14, 41, 35), None, 'N', 'N', 'N', None, None, None, None),\n ('localhost', 'mysql.infoschema', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0, 0, 'caching_sha2_password', '$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED', 'N', datetime.datetime(2020, 5, 27, 14, 41, 32), None, 'Y', 'N', 'N', None, None, None, None),\n ('localhost', 'mysql.session', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0, 0, 'caching_sha2_password', '$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED', 'N', datetime.datetime(2020, 5, 27, 14, 41, 32), None, 'Y', 'N', 'N', None, None, None, None),\n ('localhost', 'mysql.sys', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0, 0, 'caching_sha2_password', '$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED', 'N', datetime.datetime(2020, 5, 27, 14, 41, 32), None, 'Y', 'N', 'N', None, None, None, None),\n ('localhost', 'root', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'caching_sha2_password', '$A$005$5EQPBjv|}zQ3X\\x0e\\x02\\nV{ciITiWzr5sNajlp8MOUWtzZp7Kpk0H0HYxbfUTtjrD15C', 'N', datetime.datetime(2020, 5, 27, 14, 41, 35), None, 'N', 'Y', 'Y', None, None, None, None),\n ('localhost', 'user', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0, 0, 'caching_sha2_password', '$A$005$Y\\x19R_6%\\x08By\\npV+8\\x03t<04kJ62nrI5BXhSWdoj9Yg6j2jxkWqmy2xq43o3PkKoiug1', 'N', datetime.datetime(2020, 8, 25, 0, 32, 28), None, 'N', 'N', 'N', None, None, None, None)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HostUserSelect_privInsert_privUpdate_privDelete_privCreate_privDrop_privReload_privShutdown_privProcess_privFile_privGrant_privReferences_privIndex_privAlter_privShow_db_privSuper_privCreate_tmp_table_privLock_tables_privExecute_privRepl_slave_privRepl_client_privCreate_view_privShow_view_privCreate_routine_privAlter_routine_privCreate_user_privEvent_privTrigger_privCreate_tablespace_privssl_typessl_cipherx509_issuerx509_subjectmax_questionsmax_updatesmax_connectionsmax_user_connectionspluginauthentication_stringpassword_expiredpassword_last_changedpassword_lifetimeaccount_lockedCreate_role_privDrop_role_privPassword_reuse_historyPassword_reuse_timePassword_require_currentUser_attributes
%adminYYYYYYYYYYYYYYYYYYYYYYYYYYYYY0000caching_sha2_password$A$005$0s\u001a\u0012%|\u000f<&t./k:}p P{tpIir.lyQtoJbD1IqQv1wz3joWKjUWZmmz2e8Prn7fW.N2020-05-27 14:41:35NoneNNNNoneNoneNoneNone
localhostmysql.infoschemaYNNNNNNNNNNNNNNNNNNNNNNNNNNNN0000caching_sha2_password$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSEDN2020-05-27 14:41:32NoneYNNNoneNoneNoneNone
localhostmysql.sessionNNNNNNNYNNNNNNNYNNNNNNNNNNNNN0000caching_sha2_password$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSEDN2020-05-27 14:41:32NoneYNNNoneNoneNoneNone
localhostmysql.sysNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0000caching_sha2_password$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSEDN2020-05-27 14:41:32NoneYNNNoneNoneNoneNone
localhostrootYYYYYYYYYYYYYYYYYYYYYYYYYYYYY0000caching_sha2_password$A$005$5EQPBjv|}zQ3X\u000e\u0002
V{ciITiWzr5sNajlp8MOUWtzZp7Kpk0H0HYxbfUTtjrD15C
N2020-05-27 14:41:35NoneNYYNoneNoneNoneNone
localhostuserNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0000caching_sha2_password$A$005$Y\u0019R_6%\bBy
pV+8\u0003t<04kJ62nrI5BXhSWdoj9Yg6j2jxkWqmy2xq43o3PkKoiug1
N2020-08-25 00:32:28NoneNNNNoneNoneNoneNone
" }, "metadata": {}, "execution_count": 6 } ], "source": [ "%%sql\n", "SELECT * from mysql.user;" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n1 rows affected.\n8 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('information_schema',),\n ('mysql',),\n ('performance_schema',),\n ('sakila',),\n ('sys',),\n ('testdb',),\n ('testschema',),\n ('world',)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Database
information_schema
mysql
performance_schema
sakila
sys
testdb
testschema
world
" }, "metadata": {}, "execution_count": 7 } ], "source": [ "# create database/schema\n", "%%sql\n", "CREATE SCHEMA testSchema;\n", "CREATE DATABASE if not exists testDB;\n", "SHOW databases;" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n0 rows affected.\n7 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('information_schema',),\n ('mysql',),\n ('performance_schema',),\n ('sakila',),\n ('sys',),\n ('testdb',),\n ('world',)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Database
information_schema
mysql
performance_schema
sakila
sys
testdb
world
" }, "metadata": {}, "execution_count": 8 } ], "source": [ "# drop database/schema\n", "%%sql\n", "DROP SCHEMA IF EXISTS testschema;\n", "DROP DATABASE IF EXISTS test;\n", "SHOW databases;" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n * mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n * mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n * mysql+mysqlconnector://root:***@localhost:3306\n2 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORAR ... (77 characters truncated) ... VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `admin`@`localhost`',),\n ('GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROU ... (196 characters truncated) ... ION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `admin`@`localhost`',)]", "text/html": "\n \n \n \n \n \n \n \n \n \n
Grants for admin@localhost
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `admin`@`localhost`
GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `admin`@`localhost`
" }, "metadata": {}, "execution_count": 13 } ], "source": [ "# create privileged user\n", "%sql CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin';\n", "%sql GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';\n", "%sql FLUSH PRIVILEGES;\n", "%sql SHOW GRANTS FOR admin@localhost;" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[]" }, "metadata": {}, "execution_count": 16 } ], "source": [ "# remove all privileges\n", "%sql REVOKE ALL PRIVILEGES, GRANT OPTION FROM user@localhost;" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n2 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORAR ... (77 characters truncated) ... VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `admin`@`localhost`',),\n ('GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROU ... (196 characters truncated) ... ION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `admin`@`localhost`',)]", "text/html": "\n \n \n \n \n \n \n \n \n \n
Grants for admin@localhost
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `admin`@`localhost`
GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `admin`@`localhost`
" }, "metadata": {}, "execution_count": 17 } ], "source": [ "%sql SHOW GRANTS FOR admin@localhost;" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[]" }, "metadata": {}, "execution_count": 18 } ], "source": [ "# Drop User\n", "%%sql\n", "DROP USER 'admin'@'localhost';" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n * mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n * mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n * mysql+mysqlconnector://root:***@localhost:3306\n2 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('GRANT USAGE ON *.* TO `user`@`localhost`',),\n ('GRANT ALL PRIVILEGES ON `world`.* TO `user`@`localhost`',)]", "text/html": "\n \n \n \n \n \n \n \n \n \n
Grants for user@localhost
GRANT USAGE ON *.* TO `user`@`localhost`
GRANT ALL PRIVILEGES ON `world`.* TO `user`@`localhost`
" }, "metadata": {}, "execution_count": 20 } ], "source": [ "# Grant Specific Privileges\n", "%sql CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';\n", "%sql SHOW GRANTS FOR user@localhost;\n", "%sql GRANT ALL ON world.* TO 'user'@'localhost';\n", "%sql\n", " SHOW GRANTS FOR user@localhost;" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[]" }, "metadata": {}, "execution_count": 21 } ], "source": [ "%sql DROP USER 'user'@'localhost';" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tables" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[]" }, "metadata": {}, "execution_count": 22 } ], "source": [ "%%sql\n", "USE world;" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n5 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('city',), ('country',), ('countrylanguage',), ('person',), ('student',)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Tables_in_world
city
country
countrylanguage
person
student
" }, "metadata": {}, "execution_count": 23 } ], "source": [ "# list tables in the chosen database\n", "%%sql\n", "SHOW TABLES;" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('city', 'InnoDB', 10, 'Dynamic', 4188, 97, 409600, 0, 131072, 0, 4080, datetime.datetime(2020, 5, 27, 14, 42, 6), None, None, 'latin1_swedish_ci', None, '', '')]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameEngineVersionRow_formatRowsAvg_row_lengthData_lengthMax_data_lengthIndex_lengthData_freeAuto_incrementCreate_timeUpdate_timeCheck_timeCollationChecksumCreate_optionsComment
cityInnoDB10Dynamic4188974096000131072040802020-05-27 14:42:06NoneNonelatin1_swedish_ciNone
" }, "metadata": {}, "execution_count": 25 } ], "source": [ "# View Store Engine\n", "%sql SHOW TABLE STATUS LIKE 'city';" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n9 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('MEMORY', 'YES', 'Hash based, stored in memory, useful for temporary tables', 'NO', 'NO', 'NO'),\n ('MRG_MYISAM', 'YES', 'Collection of identical MyISAM tables', 'NO', 'NO', 'NO'),\n ('CSV', 'YES', 'CSV storage engine', 'NO', 'NO', 'NO'),\n ('FEDERATED', 'NO', 'Federated MySQL storage engine', None, None, None),\n ('PERFORMANCE_SCHEMA', 'YES', 'Performance Schema', 'NO', 'NO', 'NO'),\n ('MyISAM', 'YES', 'MyISAM storage engine', 'NO', 'NO', 'NO'),\n ('InnoDB', 'DEFAULT', 'Supports transactions, row-level locking, and foreign keys', 'YES', 'YES', 'YES'),\n ('BLACKHOLE', 'YES', '/dev/null storage engine (anything you write to it disappears)', 'NO', 'NO', 'NO'),\n ('ARCHIVE', 'YES', 'Archive storage engine', 'NO', 'NO', 'NO')]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
EngineSupportCommentTransactionsXASavepoints
MEMORYYESHash based, stored in memory, useful for temporary tablesNONONO
MRG_MYISAMYESCollection of identical MyISAM tablesNONONO
CSVYESCSV storage engineNONONO
FEDERATEDNOFederated MySQL storage engineNoneNoneNone
PERFORMANCE_SCHEMAYESPerformance SchemaNONONO
MyISAMYESMyISAM storage engineNONONO
InnoDBDEFAULTSupports transactions, row-level locking, and foreign keysYESYESYES
BLACKHOLEYES/dev/null storage engine (anything you write to it disappears)NONONO
ARCHIVEYESArchive storage engineNONONO
" }, "metadata": {}, "execution_count": 26 } ], "source": [ "%%sql\n", "SHOW ENGINES;" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n" }, { "output_type": "error", "ename": "DatabaseError", "evalue": "(mysql.connector.errors.DatabaseError) 3776 (HY000): Cannot change table's storage engine because the table participates in a foreign key constraint.\n[SQL: ALTER TABLE city ENGINE = 'myisam';]\n(Background on this error at: http://sqlalche.me/e/4xp6)", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mMySQLInterfaceError\u001b[0m Traceback (most recent call last)", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\connection_cext.py\u001b[0m in \u001b[0;36mcmd_query\u001b[1;34m(self, query, raw, buffered, raw_as_string)\u001b[0m\n\u001b[0;32m 488\u001b[0m \u001b[0mraw\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mraw\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbuffered\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mbuffered\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 489\u001b[1;33m raw_as_string=raw_as_string)\n\u001b[0m\u001b[0;32m 490\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mMySQLInterfaceError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mMySQLInterfaceError\u001b[0m: Cannot change table's storage engine because the table participates in a foreign key constraint.", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[1;31mDatabaseError\u001b[0m Traceback (most recent call last)", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_execute_context\u001b[1;34m(self, dialect, constructor, statement, parameters, *args)\u001b[0m\n\u001b[0;32m 1245\u001b[0m self.dialect.do_execute(\n\u001b[1;32m-> 1246\u001b[1;33m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1247\u001b[0m )\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\default.py\u001b[0m in \u001b[0;36mdo_execute\u001b[1;34m(self, cursor, statement, parameters, context)\u001b[0m\n\u001b[0;32m 587\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdo_execute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 588\u001b[1;33m \u001b[0mcursor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 589\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\cursor_cext.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, operation, params, multi)\u001b[0m\n\u001b[0;32m 265\u001b[0m \u001b[0mbuffered\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_buffered\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 266\u001b[1;33m raw_as_string=self._raw_as_string)\n\u001b[0m\u001b[0;32m 267\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mMySQLInterfaceError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\connection_cext.py\u001b[0m in \u001b[0;36mcmd_query\u001b[1;34m(self, query, raw, buffered, raw_as_string)\u001b[0m\n\u001b[0;32m 491\u001b[0m raise errors.get_mysql_exception(exc.errno, msg=exc.msg,\n\u001b[1;32m--> 492\u001b[1;33m sqlstate=exc.sqlstate)\n\u001b[0m\u001b[0;32m 493\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mDatabaseError\u001b[0m: 3776 (HY000): Cannot change table's storage engine because the table participates in a foreign key constraint.", "\nThe above exception was the direct cause of the following exception:\n", "\u001b[1;31mDatabaseError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_cell_magic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'sql'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m''\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"ALTER TABLE city ENGINE = 'myisam';\\n\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\u001b[0m in \u001b[0;36mrun_cell_magic\u001b[1;34m(self, magic_name, line, cell)\u001b[0m\n\u001b[0;32m 2360\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2361\u001b[0m \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mmagic_arg_s\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcell\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2362\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2363\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2364\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, line, cell, local_ns)\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\core\\magic.py\u001b[0m in \u001b[0;36m\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 185\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 186\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 187\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 188\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, line, cell, local_ns)\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\core\\magic.py\u001b[0m in \u001b[0;36m\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 185\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 186\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 187\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 188\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sql\\magic.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, line, cell, local_ns)\u001b[0m\n\u001b[0;32m 215\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 216\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 217\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msql\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparsed\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"sql\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0muser_ns\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 218\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 219\u001b[0m if (\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sql\\run.py\u001b[0m in \u001b[0;36mrun\u001b[1;34m(conn, sql, config, user_namespace)\u001b[0m\n\u001b[0;32m 365\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 366\u001b[0m \u001b[0mtxt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msqlalchemy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatement\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 367\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msession\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtxt\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0muser_namespace\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 368\u001b[0m \u001b[0m_commit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mconfig\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mconfig\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 369\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mconfig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfeedback\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, object_, *multiparams, **params)\u001b[0m\n\u001b[0;32m 980\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mObjectNotExecutableError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 981\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 982\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mmeth\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmultiparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 983\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 984\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_execute_function\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmultiparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\sql\\elements.py\u001b[0m in \u001b[0;36m_execute_on_connection\u001b[1;34m(self, connection, multiparams, params)\u001b[0m\n\u001b[0;32m 291\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_execute_on_connection\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mconnection\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmultiparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 292\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msupports_execution\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 293\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mconnection\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_execute_clauseelement\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmultiparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 294\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 295\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mObjectNotExecutableError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_execute_clauseelement\u001b[1;34m(self, elem, multiparams, params)\u001b[0m\n\u001b[0;32m 1099\u001b[0m \u001b[0mdistilled_params\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1100\u001b[0m \u001b[0mcompiled_sql\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1101\u001b[1;33m \u001b[0mdistilled_params\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1102\u001b[0m )\n\u001b[0;32m 1103\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_has_events\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_has_events\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_execute_context\u001b[1;34m(self, dialect, constructor, statement, parameters, *args)\u001b[0m\n\u001b[0;32m 1248\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mBaseException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1249\u001b[0m self._handle_dbapi_exception(\n\u001b[1;32m-> 1250\u001b[1;33m \u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1251\u001b[0m )\n\u001b[0;32m 1252\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_handle_dbapi_exception\u001b[1;34m(self, e, statement, parameters, cursor, context)\u001b[0m\n\u001b[0;32m 1474\u001b[0m \u001b[0mutil\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from_cause\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnewraise\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1475\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mshould_wrap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1476\u001b[1;33m \u001b[0mutil\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from_cause\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msqlalchemy_exception\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1477\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1478\u001b[0m \u001b[0mutil\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreraise\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mexc_info\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\util\\compat.py\u001b[0m in \u001b[0;36mraise_from_cause\u001b[1;34m(exception, exc_info)\u001b[0m\n\u001b[0;32m 396\u001b[0m \u001b[0mexc_type\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_value\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_tb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 397\u001b[0m \u001b[0mcause\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mexc_value\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mexc_value\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mexception\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 398\u001b[1;33m \u001b[0mreraise\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexception\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexception\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtb\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mexc_tb\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcause\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcause\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 399\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 400\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\util\\compat.py\u001b[0m in \u001b[0;36mreraise\u001b[1;34m(tp, value, tb, cause)\u001b[0m\n\u001b[0;32m 150\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__cause__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcause\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 151\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__traceback__\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mtb\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 152\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 153\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 154\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_execute_context\u001b[1;34m(self, dialect, constructor, statement, parameters, *args)\u001b[0m\n\u001b[0;32m 1244\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mevt_handled\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1245\u001b[0m self.dialect.do_execute(\n\u001b[1;32m-> 1246\u001b[1;33m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1247\u001b[0m )\n\u001b[0;32m 1248\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mBaseException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\default.py\u001b[0m in \u001b[0;36mdo_execute\u001b[1;34m(self, cursor, statement, parameters, context)\u001b[0m\n\u001b[0;32m 586\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 587\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdo_execute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 588\u001b[1;33m \u001b[0mcursor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 589\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 590\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdo_execute_no_params\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\cursor_cext.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, operation, params, multi)\u001b[0m\n\u001b[0;32m 264\u001b[0m result = self._cnx.cmd_query(stmt, raw=self._raw,\n\u001b[0;32m 265\u001b[0m \u001b[0mbuffered\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_buffered\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 266\u001b[1;33m raw_as_string=self._raw_as_string)\n\u001b[0m\u001b[0;32m 267\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mMySQLInterfaceError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 268\u001b[0m raise errors.get_mysql_exception(msg=exc.msg, errno=exc.errno,\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\connection_cext.py\u001b[0m in \u001b[0;36mcmd_query\u001b[1;34m(self, query, raw, buffered, raw_as_string)\u001b[0m\n\u001b[0;32m 490\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mMySQLInterfaceError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 491\u001b[0m raise errors.get_mysql_exception(exc.errno, msg=exc.msg,\n\u001b[1;32m--> 492\u001b[1;33m sqlstate=exc.sqlstate)\n\u001b[0m\u001b[0;32m 493\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 494\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_unix_socket\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mDatabaseError\u001b[0m: (mysql.connector.errors.DatabaseError) 3776 (HY000): Cannot change table's storage engine because the table participates in a foreign key constraint.\n[SQL: ALTER TABLE city ENGINE = 'myisam';]\n(Background on this error at: http://sqlalche.me/e/4xp6)" ] } ], "source": [ "## Fail to change to another engine because there is foreigh key which InnoDB does but the new one doesn't.\n", "%%sql\n", "ALTER TABLE city ENGINE = 'myisam';" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n5 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('ID', 'int', 'NO', 'PRI', None, 'auto_increment'),\n ('Name', 'char(35)', 'NO', '', '', ''),\n ('CountryCode', 'char(3)', 'NO', 'MUL', '', ''),\n ('District', 'char(20)', 'NO', '', '', ''),\n ('Population', 'int', 'NO', '', '0', '')]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldTypeNullKeyDefaultExtra
IDintNOPRINoneauto_increment
Namechar(35)NO
CountryCodechar(3)NOMUL
Districtchar(20)NO
PopulationintNO0
" }, "metadata": {}, "execution_count": 29 } ], "source": [ "%%sql\n", "DESC city;" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n15 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('Code', 'char(3)', 'NO', 'PRI', '', ''),\n ('Name', 'char(52)', 'NO', '', '', ''),\n ('Continent', \"enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America')\", 'NO', '', 'Asia', ''),\n ('Region', 'char(26)', 'NO', '', '', ''),\n ('SurfaceArea', 'float(10,2)', 'NO', '', '0.00', ''),\n ('IndepYear', 'smallint', 'YES', '', None, ''),\n ('Population', 'int', 'NO', '', '0', ''),\n ('LifeExpectancy', 'float(3,1)', 'YES', '', None, ''),\n ('GNP', 'float(10,2)', 'YES', '', None, ''),\n ('GNPOld', 'float(10,2)', 'YES', '', None, ''),\n ('LocalName', 'char(45)', 'NO', '', '', ''),\n ('GovernmentForm', 'char(45)', 'NO', '', '', ''),\n ('HeadOfState', 'char(60)', 'YES', '', None, ''),\n ('Capital', 'int', 'YES', '', None, ''),\n ('Code2', 'char(2)', 'NO', '', '', '')]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldTypeNullKeyDefaultExtra
Codechar(3)NOPRI
Namechar(52)NO
Continentenum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America')NOAsia
Regionchar(26)NO
SurfaceAreafloat(10,2)NO0.00
IndepYearsmallintYESNone
PopulationintNO0
LifeExpectancyfloat(3,1)YESNone
GNPfloat(10,2)YESNone
GNPOldfloat(10,2)YESNone
LocalNamechar(45)NO
GovernmentFormchar(45)NO
HeadOfStatechar(60)YESNone
CapitalintYESNone
Code2char(2)NO
" }, "metadata": {}, "execution_count": 30 } ], "source": [ "%%sql\n", "DESCRIBE country;" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n4 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('CountryCode', 'char(3)', 'NO', 'PRI', '', ''),\n ('Language', 'char(30)', 'NO', 'PRI', '', ''),\n ('IsOfficial', \"enum('T','F')\", 'NO', '', 'F', ''),\n ('Percentage', 'float(4,1)', 'NO', '', '0.0', '')]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldTypeNullKeyDefaultExtra
CountryCodechar(3)NOPRI
Languagechar(30)NOPRI
IsOfficialenum('T','F')NOF
Percentagefloat(4,1)NO0.0
" }, "metadata": {}, "execution_count": 31 } ], "source": [ "%%sql\n", "DESCRIBE countrylanguage;" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('city', \"CREATE TABLE `city` (\\n `ID` int NOT NULL AUTO_INCREMENT,\\n `Name` char(35) NOT NULL DEFAULT '',\\n `CountryCode` char(3) NOT NULL DEFAULT '',\\n ` ... (139 characters truncated) ... `),\\n CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`Code`)\\n) ENGINE=InnoDB AUTO_INCREMENT=4083 DEFAULT CHARSET=latin1\")]", "text/html": "\n \n \n \n \n \n \n \n \n
TableCreate Table
cityCREATE TABLE `city` (
`ID` int NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`Code`)
) ENGINE=InnoDB AUTO_INCREMENT=4083 DEFAULT CHARSET=latin1
" }, "metadata": {}, "execution_count": 32 } ], "source": [ "%%sql\n", "SHOW CREATE TABLE city;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## CRUD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n5 rows affected.\n5 rows affected.\n5 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('ABW', 'Dutch', 'T', 5.3),\n ('ABW', 'English', 'F', 9.5),\n ('ABW', 'Papiamento', 'F', 76.7),\n ('ABW', 'Spanish', 'F', 7.4),\n ('AFG', 'Balochi', 'F', 0.9)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
CountryCodeLanguageIsOfficialPercentage
ABWDutchT5.3
ABWEnglishF9.5
ABWPapiamentoF76.7
ABWSpanishF7.4
AFGBalochiF0.9
" }, "metadata": {}, "execution_count": 33 } ], "source": [ "%%sql\n", "SELECT * FROM city LIMIT 5;\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n5 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('ABW', 'Aruba', 'North America', 'Caribbean', 193.0, None, 103000, 78.4, 828.0, 793.0, 'Aruba', 'Nonmetropolitan Territory of The Netherlands', 'Beatrix', 129, 'AW'),\n ('AFG', 'Afghanistan', 'Asia', 'Southern and Central Asia', 652090.0, 1919, 22720000, 45.9, 5976.0, None, 'Afganistan/Afqanestan', 'Islamic Emirate', 'Mohammad Omar', 1, 'AF'),\n ('AGO', 'Angola', 'Africa', 'Central Africa', 1246700.0, 1975, 12878000, 38.3, 6648.0, 7984.0, 'Angola', 'Republic', 'José Eduardo dos Santos', 56, 'AO'),\n ('AIA', 'Anguilla', 'North America', 'Caribbean', 96.0, None, 8000, 76.1, 63.2, None, 'Anguilla', 'Dependent Territory of the UK', 'Elisabeth II', 62, 'AI'),\n ('ALB', 'Albania', 'Europe', 'Southern Europe', 28748.0, 1912, 3401200, 71.6, 3205.0, 2500.0, 'Shqipëria', 'Republic', 'Rexhep Mejdani', 34, 'AL')]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
CodeNameContinentRegionSurfaceAreaIndepYearPopulationLifeExpectancyGNPGNPOldLocalNameGovernmentFormHeadOfStateCapitalCode2
ABWArubaNorth AmericaCaribbean193.0None10300078.4828.0793.0ArubaNonmetropolitan Territory of The NetherlandsBeatrix129AW
AFGAfghanistanAsiaSouthern and Central Asia652090.019192272000045.95976.0NoneAfganistan/AfqanestanIslamic EmirateMohammad Omar1AF
AGOAngolaAfricaCentral Africa1246700.019751287800038.36648.07984.0AngolaRepublicJosé Eduardo dos Santos56AO
AIAAnguillaNorth AmericaCaribbean96.0None800076.163.2NoneAnguillaDependent Territory of the UKElisabeth II62AI
ALBAlbaniaEuropeSouthern Europe28748.01912340120071.63205.02500.0ShqipëriaRepublicRexhep Mejdani34AL
" }, "metadata": {}, "execution_count": 34 } ], "source": [ "%%sql\n", "SELECT * FROM country LIMIT 5;" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n5 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('ABW', 'Dutch', 'T', 5.3),\n ('ABW', 'English', 'F', 9.5),\n ('ABW', 'Papiamento', 'F', 76.7),\n ('ABW', 'Spanish', 'F', 7.4),\n ('AFG', 'Balochi', 'F', 0.9)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
CountryCodeLanguageIsOfficialPercentage
ABWDutchT5.3
ABWEnglishF9.5
ABWPapiamentoF76.7
ABWSpanishF7.4
AFGBalochiF0.9
" }, "metadata": {}, "execution_count": 35 } ], "source": [ "%%sql\n", "SELECT * FROM countrylanguage LIMIT 5;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Country who has the largest percentage of population speaking english" ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('Bermuda',)]", "text/html": "\n \n \n \n \n \n \n
name
Bermuda
" }, "metadata": {}, "execution_count": 86 } ], "source": [ "%%sql\n", "SELECT c.name FROM country AS c INNER JOIN\n", "(SELECT CountryCode\n", " FROM countrylanguage\n", " WHERE Percentage = (SELECT max(Percentage) AS Percentage FROM countrylanguage WHERE Language = 'English')\n", " AND language = 'English') as cl ON c.Code=cl.CountryCode;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Percentage of chinese speaking population in the world population" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('19.61%',)]", "text/html": "\n \n \n \n \n \n \n
ratio
19.61%
" }, "metadata": {}, "execution_count": 45 } ], "source": [ "%%sql\n", "SELECT concat(round((SELECT sum(population.population)\n", " FROM (SELECT pbp.population * pbp.percentage / 100 AS population\n", " FROM (SELECT c.population, cl.percentage\n", " FROM country AS c\n", " INNER JOIN (SELECT * FROM countrylanguage WHERE language = 'chinese') AS cl\n", " ON c.code = cl.countrycode) AS pbp) AS population) /\n", " (SELECT sum(population) FROM country) * 100, 2), '%') AS ratio;\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n1 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[(4084, 'shenzhen', 'chn', 'unknown', 10000000)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
IDNameCountryCodeDistrictPopulation
4084shenzhenchnunknown10000000
" }, "metadata": {}, "execution_count": 91 } ], "source": [ "%%sql\n", "INSERT INTO city (name, countrycode, district, population)\n", "VALUES ('shenzhen', 'chn', 'unknown', 10000000);\n", "\n", "SELECT * FROM city\n", "ORDER BY id DESC LIMIT 1;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create Table" ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[]" }, "metadata": {}, "execution_count": 100 } ], "source": [ "%%sql\n", "CREATE TABLE person\n", "(\n", " id int NOT NULL AUTO_INCREMENT,\n", " firstname varchar(30),\n", " lastname varchar(30),\n", " home_country_code char(3),\n", " CONSTRAINT pk_id PRIMARY KEY (id)\n", ") ENGINE = innodb;" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[]" }, "metadata": {}, "execution_count": 101 } ], "source": [ "%%sql\n", "CREATE TABLE student\n", "(\n", " id int NOT NULL AUTO_INCREMENT,\n", " personid int NOT NULL,\n", " CONSTRAINT pk_id PRIMARY KEY (id),\n", " CONSTRAINT fk_person FOREIGN KEY (personid) REFERENCES person (id)\n", " ON UPDATE CASCADE\n", " ON DELETE CASCADE\n", ") ENGINE = innodb;" ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n2 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('id', 'int', 'NO', 'PRI', None, 'auto_increment'),\n ('personid', 'int', 'NO', 'MUL', None, '')]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldTypeNullKeyDefaultExtra
idintNOPRINoneauto_increment
personidintNOMULNone
" }, "metadata": {}, "execution_count": 102 } ], "source": [ "%%sql\n", "DESC student;" ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n0 rows affected.\n5 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('id', 'int', 'NO', 'PRI', None, 'auto_increment'),\n ('personid', 'int', 'NO', 'MUL', None, ''),\n ('school', 'varchar(50)', 'YES', '', None, ''),\n ('grade', 'int unsigned', 'YES', '', None, ''),\n ('class', 'int unsigned', 'YES', '', None, '')]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldTypeNullKeyDefaultExtra
idintNOPRINoneauto_increment
personidintNOMULNone
schoolvarchar(50)YESNone
gradeint unsignedYESNone
classint unsignedYESNone
" }, "metadata": {}, "execution_count": 103 } ], "source": [ "%%sql\n", "ALTER TABLE student\n", " ADD COLUMN school varchar(50),\n", " ADD COLUMN grade int UNSIGNED,\n", " ADD COLUMN class int UNSIGNED;\n", "\n", "DESC student;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next: Should fail because of foreign key constraint, the personID DNE in person table" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n" }, { "output_type": "error", "ename": "IntegrityError", "evalue": "(mysql.connector.errors.IntegrityError) 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`world`.`student`, CONSTRAINT `fk_person` FOREIGN KEY (`personid`) REFERENCES `person` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)\n[SQL: INSERT INTO student (personid, school) VALUES (10, 'bcs');]\n(Background on this error at: http://sqlalche.me/e/gkpj)", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mMySQLInterfaceError\u001b[0m Traceback (most recent call last)", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\connection_cext.py\u001b[0m in \u001b[0;36mcmd_query\u001b[1;34m(self, query, raw, buffered, raw_as_string)\u001b[0m\n\u001b[0;32m 488\u001b[0m \u001b[0mraw\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mraw\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbuffered\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mbuffered\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 489\u001b[1;33m raw_as_string=raw_as_string)\n\u001b[0m\u001b[0;32m 490\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mMySQLInterfaceError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mMySQLInterfaceError\u001b[0m: Cannot add or update a child row: a foreign key constraint fails (`world`.`student`, CONSTRAINT `fk_person` FOREIGN KEY (`personid`) REFERENCES `person` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[1;31mIntegrityError\u001b[0m Traceback (most recent call last)", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_execute_context\u001b[1;34m(self, dialect, constructor, statement, parameters, *args)\u001b[0m\n\u001b[0;32m 1245\u001b[0m self.dialect.do_execute(\n\u001b[1;32m-> 1246\u001b[1;33m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1247\u001b[0m )\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\default.py\u001b[0m in \u001b[0;36mdo_execute\u001b[1;34m(self, cursor, statement, parameters, context)\u001b[0m\n\u001b[0;32m 587\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdo_execute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 588\u001b[1;33m \u001b[0mcursor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 589\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\cursor_cext.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, operation, params, multi)\u001b[0m\n\u001b[0;32m 265\u001b[0m \u001b[0mbuffered\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_buffered\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 266\u001b[1;33m raw_as_string=self._raw_as_string)\n\u001b[0m\u001b[0;32m 267\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mMySQLInterfaceError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\connection_cext.py\u001b[0m in \u001b[0;36mcmd_query\u001b[1;34m(self, query, raw, buffered, raw_as_string)\u001b[0m\n\u001b[0;32m 491\u001b[0m raise errors.get_mysql_exception(exc.errno, msg=exc.msg,\n\u001b[1;32m--> 492\u001b[1;33m sqlstate=exc.sqlstate)\n\u001b[0m\u001b[0;32m 493\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mIntegrityError\u001b[0m: 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`world`.`student`, CONSTRAINT `fk_person` FOREIGN KEY (`personid`) REFERENCES `person` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)", "\nThe above exception was the direct cause of the following exception:\n", "\u001b[1;31mIntegrityError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_cell_magic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'sql'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m''\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"INSERT INTO student (personid, school) VALUES (10, 'bcs');\\n\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\u001b[0m in \u001b[0;36mrun_cell_magic\u001b[1;34m(self, magic_name, line, cell)\u001b[0m\n\u001b[0;32m 2360\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2361\u001b[0m \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mmagic_arg_s\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcell\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2362\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2363\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2364\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, line, cell, local_ns)\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\core\\magic.py\u001b[0m in \u001b[0;36m\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 185\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 186\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 187\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 188\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, line, cell, local_ns)\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\core\\magic.py\u001b[0m in \u001b[0;36m\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 185\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 186\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 187\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 188\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sql\\magic.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, line, cell, local_ns)\u001b[0m\n\u001b[0;32m 215\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 216\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 217\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msql\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparsed\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"sql\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0muser_ns\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 218\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 219\u001b[0m if (\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sql\\run.py\u001b[0m in \u001b[0;36mrun\u001b[1;34m(conn, sql, config, user_namespace)\u001b[0m\n\u001b[0;32m 365\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 366\u001b[0m \u001b[0mtxt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msqlalchemy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msql\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatement\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 367\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msession\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtxt\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0muser_namespace\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 368\u001b[0m \u001b[0m_commit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mconfig\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mconfig\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 369\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mconfig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfeedback\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, object_, *multiparams, **params)\u001b[0m\n\u001b[0;32m 980\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mObjectNotExecutableError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 981\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 982\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mmeth\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmultiparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 983\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 984\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_execute_function\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmultiparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\sql\\elements.py\u001b[0m in \u001b[0;36m_execute_on_connection\u001b[1;34m(self, connection, multiparams, params)\u001b[0m\n\u001b[0;32m 291\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_execute_on_connection\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mconnection\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmultiparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 292\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msupports_execution\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 293\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mconnection\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_execute_clauseelement\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmultiparams\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 294\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 295\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mObjectNotExecutableError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_execute_clauseelement\u001b[1;34m(self, elem, multiparams, params)\u001b[0m\n\u001b[0;32m 1099\u001b[0m \u001b[0mdistilled_params\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1100\u001b[0m \u001b[0mcompiled_sql\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1101\u001b[1;33m \u001b[0mdistilled_params\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1102\u001b[0m )\n\u001b[0;32m 1103\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_has_events\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_has_events\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_execute_context\u001b[1;34m(self, dialect, constructor, statement, parameters, *args)\u001b[0m\n\u001b[0;32m 1248\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mBaseException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1249\u001b[0m self._handle_dbapi_exception(\n\u001b[1;32m-> 1250\u001b[1;33m \u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1251\u001b[0m )\n\u001b[0;32m 1252\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_handle_dbapi_exception\u001b[1;34m(self, e, statement, parameters, cursor, context)\u001b[0m\n\u001b[0;32m 1474\u001b[0m \u001b[0mutil\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from_cause\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnewraise\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1475\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mshould_wrap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1476\u001b[1;33m \u001b[0mutil\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from_cause\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msqlalchemy_exception\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1477\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1478\u001b[0m \u001b[0mutil\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreraise\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mexc_info\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\util\\compat.py\u001b[0m in \u001b[0;36mraise_from_cause\u001b[1;34m(exception, exc_info)\u001b[0m\n\u001b[0;32m 396\u001b[0m \u001b[0mexc_type\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_value\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_tb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 397\u001b[0m \u001b[0mcause\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mexc_value\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mexc_value\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mexception\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 398\u001b[1;33m \u001b[0mreraise\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexception\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexception\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtb\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mexc_tb\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcause\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcause\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 399\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 400\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\util\\compat.py\u001b[0m in \u001b[0;36mreraise\u001b[1;34m(tp, value, tb, cause)\u001b[0m\n\u001b[0;32m 150\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__cause__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcause\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 151\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__traceback__\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mtb\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 152\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 153\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 154\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\base.py\u001b[0m in \u001b[0;36m_execute_context\u001b[1;34m(self, dialect, constructor, statement, parameters, *args)\u001b[0m\n\u001b[0;32m 1244\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mevt_handled\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1245\u001b[0m self.dialect.do_execute(\n\u001b[1;32m-> 1246\u001b[1;33m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1247\u001b[0m )\n\u001b[0;32m 1248\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mBaseException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\sqlalchemy\\engine\\default.py\u001b[0m in \u001b[0;36mdo_execute\u001b[1;34m(self, cursor, statement, parameters, context)\u001b[0m\n\u001b[0;32m 586\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 587\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdo_execute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 588\u001b[1;33m \u001b[0mcursor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparameters\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 589\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 590\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdo_execute_no_params\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcursor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstatement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\cursor_cext.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, operation, params, multi)\u001b[0m\n\u001b[0;32m 264\u001b[0m result = self._cnx.cmd_query(stmt, raw=self._raw,\n\u001b[0;32m 265\u001b[0m \u001b[0mbuffered\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_buffered\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 266\u001b[1;33m raw_as_string=self._raw_as_string)\n\u001b[0m\u001b[0;32m 267\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mMySQLInterfaceError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 268\u001b[0m raise errors.get_mysql_exception(msg=exc.msg, errno=exc.errno,\n", "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\mysql\\connector\\connection_cext.py\u001b[0m in \u001b[0;36mcmd_query\u001b[1;34m(self, query, raw, buffered, raw_as_string)\u001b[0m\n\u001b[0;32m 490\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mMySQLInterfaceError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 491\u001b[0m raise errors.get_mysql_exception(exc.errno, msg=exc.msg,\n\u001b[1;32m--> 492\u001b[1;33m sqlstate=exc.sqlstate)\n\u001b[0m\u001b[0;32m 493\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 494\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_unix_socket\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mIntegrityError\u001b[0m: (mysql.connector.errors.IntegrityError) 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`world`.`student`, CONSTRAINT `fk_person` FOREIGN KEY (`personid`) REFERENCES `person` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)\n[SQL: INSERT INTO student (personid, school) VALUES (10, 'bcs');]\n(Background on this error at: http://sqlalche.me/e/gkpj)" ] } ], "source": [ "%%sql\n", "INSERT INTO student (personid, school) VALUES (10, 'bcs');" ] }, { "cell_type": "code", "execution_count": 105, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n1 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[]" }, "metadata": {}, "execution_count": 105 } ], "source": [ "%%sql\n", "INSERT INTO person (firstname, lastname)\n", "VALUES ('first', 'last');\n", "INSERT INTO person (id, firstname, lastname)\n", "VALUES (100, 'one', 'two');" ] }, { "cell_type": "code", "execution_count": 106, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n2 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[(1, 'first', 'last', None), (100, 'one', 'two', None)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idfirstnamelastnamehome_country_code
1firstlastNone
100onetwoNone
" }, "metadata": {}, "execution_count": 106 } ], "source": [ "%%sql\n", "SELECT * FROM person;" ] }, { "cell_type": "code", "execution_count": 107, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n1 rows affected.\n2 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[(2, 1, 'bcs', None, None), (3, 100, 'uoft', None, None)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idpersonidschoolgradeclass
21bcsNoneNone
3100uoftNoneNone
" }, "metadata": {}, "execution_count": 107 } ], "source": [ "%%sql\n", "INSERT INTO student (personid, school)\n", "VALUES ((SELECT id FROM person LIMIT 1), 'bcs');\n", "\n", "INSERT INTO student (personid, school)\n", "VALUES (100, 'uoft');\n", "\n", "SELECT * FROM student;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Update" ] }, { "cell_type": "code", "execution_count": 108, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n2 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[(1, 'first', 'last', None), (99, 'three', 'four', None)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idfirstnamelastnamehome_country_code
1firstlastNone
99threefourNone
" }, "metadata": {}, "execution_count": 108 } ], "source": [ "%%sql\n", "UPDATE person\n", "SET id=99,\n", " firstname='three',\n", " lastname='four'\n", "WHERE id = 100;\n", "\n", "SELECT * FROM person;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cascading update student's personID" ] }, { "cell_type": "code", "execution_count": 109, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n2 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[(2, 1, 'bcs', None, None), (3, 99, 'uoft', None, None)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idpersonidschoolgradeclass
21bcsNoneNone
399uoftNoneNone
" }, "metadata": {}, "execution_count": 109 } ], "source": [ "%%sql\n", "SELECT * FROM student;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cascading delete student with person id=99" ] }, { "cell_type": "code", "execution_count": 110, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n1 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[(2, 1, 'bcs', None, None)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idpersonidschoolgradeclass
21bcsNoneNone
" }, "metadata": {}, "execution_count": 110 } ], "source": [ "%%sql\n", "DELETE FROM person WHERE id = 99;\n", "SELECT * FROM student;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Delete (Clean Up)" ] }, { "cell_type": "code", "execution_count": 111, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n1 rows affected.\n0 rows affected.\n0 rows affected.\n0 rows affected.\n1 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[]" }, "metadata": {}, "execution_count": 111 } ], "source": [ "%%sql\n", "DELETE FROM person;\n", "DELETE FROM student;\n", "DROP TABLE IF EXISTS student;\n", "DROP TABLE IF EXISTS person;\n", "DELETE FROM city WHERE Name='shenzhen';" ] }, { "cell_type": "code", "execution_count": 112, "metadata": { "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "* mysql+mysqlconnector://root:***@localhost:3306\n3 rows affected.\n" }, { "output_type": "execute_result", "data": { "text/plain": "[('city',), ('country',), ('countrylanguage',)]", "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n
Tables_in_world
city
country
countrylanguage
" }, "metadata": {}, "execution_count": 112 } ], "source": [ "%%sql\n", "SHOW TABLES;" ] } ] }