Resumo : neste tutorial mostraremos como criar tabelas no banco de dados SQLite a partir do programa Python usando o módulo sqlite3.
Para criar uma nova tabela em um banco de dados SQLite a partir de um programa Python, você usa as seguintes etapas:
- Primeiro, crie um
Connection
objeto usando aconnect()
função do módulo sqlite3. - Segundo, crie um
Cursor
objeto chamando ocursor()
método doConnection
objeto. - Terceiro, passe a
CREATE TABLE
instrução para oexecute()
método doCursor
objeto e execute este método.
Para a demonstração, criaremos duas tabelas: projects
e tasks
conforme mostrado no diagrama do banco de dados a seguir:
As CREATE TABLE
instruções a seguir criam essas duas tabelas:
-- projects table
CREATE TABLE IF NOT EXISTS projects (
id integer PRIMARY KEY,
name text NOT NULL,
begin_date text,
end_date text
);
-- tasks table
CREATE TABLE IF NOT EXISTS tasks (
id integer PRIMARY KEY,
name text NOT NULL,
priority integer,
project_id integer NOT NULL,
status_id integer NOT NULL,
begin_date text NOT NULL,
end_date text NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects (id)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Vamos ver como criar novas tabelas em Python.
Primeiro, desenvolva uma função chamada create_connection()
que retorne um Connection
objeto que representa um banco de dados SQLite especificado pelo parâmetro de arquivo de banco de dados db_file.
def create_connection(db_file):
""" create a database connection to the SQLite database
specified by db_file
:param db_file: database file
:return: Connection object or None
"""
conn = None
try:
conn = sqlite3.connect(db_file)
return conn
except Error as e:
print(e)
return conn
Linguagem de código: Python ( python )
Segundo, desenvolva uma função chamada create_table()
que aceite um Connection
objeto e uma instrução SQL. Dentro da função, chamamos o execute()
método do Cursor
objeto para executar a CREATE TABLE
instrução.
def create_table(conn, create_table_sql):
""" create a table from the create_table_sql statement
:param conn: Connection object
:param create_table_sql: a CREATE TABLE statement
:return:
"""
try:
c = conn.cursor()
c.execute(create_table_sql)
except Error as e:
print(e)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, crie uma main()
função para criar as tabelas projects
e tasks
.
def main():
database = r"C:\sqlite\db\pythonsqlite.db"
sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS projects (
id integer PRIMARY KEY,
name text NOT NULL,
begin_date text,
end_date text
); """
sql_create_tasks_table = """CREATE TABLE IF NOT EXISTS tasks (
id integer PRIMARY KEY,
name text NOT NULL,
priority integer,
status_id integer NOT NULL,
project_id integer NOT NULL,
begin_date text NOT NULL,
end_date text NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects (id)
);"""
# create a database connection
conn = create_connection(database)
# create tables
if conn is not None:
# create projects table
create_table(conn, sql_create_projects_table)
# create tasks table
create_table(conn, sql_create_tasks_table)
else:
print("Error! cannot create the database connection.")
Linguagem de código: Python ( python )
Quarto, execute a main()
função.
if __name__ == '__main__':
main()
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Aqui está o programa completo:
import sqlite3
from sqlite3 import Error
def create_connection(db_file):
""" create a database connection to the SQLite database
specified by db_file
:param db_file: database file
:return: Connection object or None
"""
conn = None
try:
conn = sqlite3.connect(db_file)
return conn
except Error as e:
print(e)
return conn
def create_table(conn, create_table_sql):
""" create a table from the create_table_sql statement
:param conn: Connection object
:param create_table_sql: a CREATE TABLE statement
:return:
"""
try:
c = conn.cursor()
c.execute(create_table_sql)
except Error as e:
print(e)
def main():
database = r"C:\sqlite\db\pythonsqlite.db"
sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS projects (
id integer PRIMARY KEY,
name text NOT NULL,
begin_date text,
end_date text
); """
sql_create_tasks_table = """CREATE TABLE IF NOT EXISTS tasks (
id integer PRIMARY KEY,
name text NOT NULL,
priority integer,
status_id integer NOT NULL,
project_id integer NOT NULL,
begin_date text NOT NULL,
end_date text NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects (id)
);"""
# create a database connection
conn = create_connection(database)
# create tables
if conn is not None:
# create projects table
create_table(conn, sql_create_projects_table)
# create tasks table
create_table(conn, sql_create_tasks_table)
else:
print("Error! cannot create the database connection.")
if __name__ == '__main__':
main()
Linguagem de código: Python ( python )
Vamos verificar se o programa criou essas tabelas com sucesso no pythonsqlite.db
banco de dados.
Primeiro, inicie a linha de comando e conecte-se ao pythonsqlite.db
banco de dados:
>sqlite3 c:\sqlite\db\pythonsqlite.db
Em seguida, use o .tables
comando para exibir as tabelas no banco de dados.
sqlite> .tables
projects tasks
Linguagem de código: CSS ( css )
Como você pode ver claramente na saída, temos as tabelas projects
e tasks
no pythonsqlite.db
banco de dados. E o programa funciona conforme o esperado.
Neste tutorial, você aprendeu como criar novas tabelas no banco de dados SQLite usando o execute()
método do Cursor
objeto.