W3docs

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-python instalado:
pip install mysql-connector-python

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

ColunaTipoObservações
idINTAUTO_INCREMENT gera um ID único para cada linha; PRIMARY KEY garante unicidade e acelera as buscas
nameVARCHAR(255)String de comprimento variável até 255 caracteres; NOT NULL significa que toda linha deve fornecer um valor
addressVARCHAR(255)Opcional — sem NOT NULL, portanto aceita NULL
ageINTArmazena 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 dadoCaso de uso
INTNúmeros inteiros (IDs, contagens, idades)
FLOAT, DOUBLENúmeros decimais (preços, medidas)
VARCHAR(n)Texto de comprimento variável até n caracteres
TEXTStrings longas sem máximo fixo
DATEDatas de calendário (YYYY-MM-DD)
DATETIMEData e hora combinadas (YYYY-MM-DD HH:MM:SS)
BOOLEANTRUE / 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:

  1. Instale mysql-connector-python e conecte-se ao seu banco de dados.
  2. Escreva uma instrução CREATE TABLE que defina o nome, o tipo de dado e as restrições de cada coluna.
  3. Use IF NOT EXISTS para evitar erros em execuções repetidas.
  4. Chame SHOW TABLES (ou consulte information_schema.tables) para confirmar que a tabela foi criada.
  5. 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).

Was this page helpful?