Criar Tabela no MySQL usando Python
Aprenda a criar tabelas MySQL em Python com mysql-connector-python. Abrange CREATE TABLE, tipos de dados, restrições, IF NOT EXISTS e SHOW TABLES.
Criar uma tabela é o primeiro passo para armazenar dados estruturados no MySQL. Este capítulo mostra como definir e criar uma tabela MySQL a partir do Python usando mysql-connector-python, abordando tipos de dados de colunas, restrições comuns, o guarda IF NOT EXISTS, como listar tabelas existentes e como tratar erros de forma limpa.
Pré-requisitos
Antes de executar qualquer um dos exemplos abaixo, certifique-se de que você tem:
- Python 3.x instalado
- Um servidor MySQL em execução
mysql-connector-pythoninstalado:
pip install mysql-connector-python- Um banco de dados para trabalhar (veja MySQL Criar Banco de Dados se precisar criar um)
Conectando ao MySQL
Toda operação começa com uma conexão. Passe suas credenciais e o nome do banco de dados alvo para mysql.connector.connect():
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()O objeto cursor() é o que você usa para enviar instruções SQL ao servidor.
Criando uma Tabela
Use a instrução SQL CREATE TABLE dentro de cursor.execute() para definir uma nova tabela. O exemplo abaixo cria uma tabela customers com quatro colunas:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Table created successfully.")
mycursor.close()
mydb.close()Tipos de coluna e restrições usadas acima
| Coluna | Tipo | Observações |
|---|---|---|
id | INT | AUTO_INCREMENT gera um ID único para cada linha; PRIMARY KEY garante unicidade e acelera as buscas |
name | VARCHAR(255) | String de comprimento variável até 255 caracteres; NOT NULL significa que toda linha deve fornecer um valor |
address | VARCHAR(255) | Opcional — sem NOT NULL, portanto aceita NULL |
age | INT | Armazena números inteiros |
Usando IF NOT EXISTS
Executar CREATE TABLE em uma tabela que já existe gera um erro. Adicione IF NOT EXISTS para tornar a instrução uma operação nula quando a tabela já estiver presente:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Done — table created or already exists.")
mycursor.close()
mydb.close()Esse padrão é seguro de chamar em cada inicialização da aplicação sem causar erros de tabela duplicada.
Listando Tabelas para Verificar a Criação
Após criar uma tabela, você pode confirmar sua existência executando SHOW TABLES:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SHOW TABLES")
tables = [row[0] for row in mycursor.fetchall()]
print("Tables in database:", tables)
if "customers" in tables:
print("customers table is ready.")
else:
print("customers table was not found.")
mycursor.close()
mydb.close()Exemplo de saída:
Tables in database: ['customers']
customers table is ready.Tratando Erros
Envolver o código de criação de tabela em um bloco try/except permite capturar problemas — como uma conexão perdida ou um erro de sintaxe no SQL — sem travar o programa:
import mysql.connector
from mysql.connector import Error
try:
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Table created successfully.")
except Error as e:
print(f"Error: {e}")
finally:
if mydb.is_connected():
mycursor.close()
mydb.close()
print("Connection closed.")O bloco finally garante que a conexão seja sempre fechada, mesmo que ocorra uma exceção.
Tipos de Dados Comuns de Colunas
O MySQL suporta muitos tipos de dados. Estes são os que você usará com mais frequência em aplicações Python:
| Tipo de dado | Caso de uso |
|---|---|
INT | Números inteiros (IDs, contagens, idades) |
FLOAT, DOUBLE | Números decimais (preços, medidas) |
VARCHAR(n) | Texto de comprimento variável até n caracteres |
TEXT | Strings longas sem máximo fixo |
DATE | Datas de calendário (YYYY-MM-DD) |
DATETIME | Data e hora combinadas (YYYY-MM-DD HH:MM:SS) |
BOOLEAN | TRUE / FALSE (armazenado como TINYINT(1)) |
Um Exemplo Mais Completo
Aqui está uma tabela mais realista que utiliza vários tipos de dados e restrições em conjunto:
import mysql.connector
from mysql.connector import Error
try:
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
product VARCHAR(255) NOT NULL,
quantity INT NOT NULL DEFAULT 1,
price FLOAT NOT NULL,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP
)
"""
mycursor.execute(sql)
print("orders table created (or already exists).")
except Error as e:
print(f"Error: {e}")
finally:
if mydb.is_connected():
mycursor.close()
mydb.close()DEFAULT 1 significa que quantity é definida como 1 quando nenhum valor é fornecido. DEFAULT CURRENT_TIMESTAMP registra automaticamente quando cada linha de pedido é inserida.
Conclusão
Para criar uma tabela no MySQL a partir do Python:
- Instale
mysql-connector-pythone conecte-se ao seu banco de dados. - Escreva uma instrução
CREATE TABLEque defina o nome, o tipo de dado e as restrições de cada coluna. - Use
IF NOT EXISTSpara evitar erros em execuções repetidas. - Chame
SHOW TABLES(ou consulteinformation_schema.tables) para confirmar que a tabela foi criada. - Sempre feche o cursor e a conexão — de preferência em um bloco
finally.
Depois que sua tabela existir, você pode começar a inserir linhas (veja MySQL Insert) e consultá-las de volta (veja MySQL Select).