mirror of
https://github.com/rasbt/python_reference.git
synced 2024-12-18 08:10:24 +00:00
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
# Sebastian Raschka, 2014
|
|
# Creating an index on a column with unique! values
|
|
# Boosts performance for data base operations.
|
|
|
|
import sqlite3
|
|
|
|
sqlite_file = 'my_first_db.sqlite' # name of the sqlite database file
|
|
table_name = 'my_table_2' # name of the table to be created
|
|
id_column = 'my_1st_column' # name of the PRIMARY KEY column
|
|
new_column = 'unique_names' # name of the new column
|
|
column_type = 'TEXT' # E.g., INTEGER, TEXT, NULL, REAL, BLOB
|
|
index_name = 'my_unique_index' # name for the new unique index
|
|
|
|
# Connecting to the database file
|
|
conn = sqlite3.connect(sqlite_file)
|
|
c = conn.cursor()
|
|
|
|
# Adding a new column and update some record
|
|
c.execute("ALTER TABLE {tn} ADD COLUMN '{cn}' {ct}"\
|
|
.format(tn=table_name, cn=new_column, ct=column_type))
|
|
c.execute("UPDATE {tn} SET {cn}='sebastian_r' WHERE {idf}=123456".\
|
|
format(tn=table_name, idf=id_column, cn=new_column))
|
|
|
|
# Creating an unique index
|
|
c.execute('CREATE INDEX {ix} on {tn}({cn})'\
|
|
.format(ix=index_name, tn=table_name, cn=new_column))
|
|
|
|
# Dropping the unique index
|
|
# E.g., to avoid future conflicts with update/insert functions
|
|
c.execute('DROP INDEX {ix}'.format(ix=index_name))
|
|
|
|
# Committing changes and closing the connection to the database file
|
|
conn.commit()
|
|
conn.close()
|