SQLite
import sqlite3 con = sqlite3.connect('sample.db') #データベースへ接続、無ければ作製 cur = con.cursor() #カーソルオブジェクト作製 sql = "create table fruits(name text, price text);" #Table作製 cur.execute(sql) sql_2 = "insert into fruits values('apple', '100yen')" #レコード挿入 cur.execute(sql_2) cur.executemany("insert into fruits values(?, ?)", [('orange', '150yen'), ('banana', '200yen')]) # レコードを一括挿入 sql_3 = "select * from fruits" cur.execute(sql_3) # select文をexecute()に渡す for row in cur: # レコードを出力する print(row[0], row[1]) con.commit() #コミットする con.close()
INTEGER PRIMARY KEY AUTOINCREMENT:自動的に番号を割り振る
sql = "create table fruits(id INTEGER PRIMARY KEY AUTOINCREMENT, price text);" cur.execute(sql) #この場合、テーブル作成ごとに第一カラムに番号が割り振られます
カラム1つに値を入れる
t = '200yen' cur.execute("insert into fruits(price) VALUES(?)",(t,))
カラム2つに値を入れる
cur.execute("insert into fruits values(?,?)",('apple','100yen')) または p = "insert into fruits values(?, ?)" cur.execute(p, ('orange', '200yen'))
複数レコードを挿入
data = [ ('grape1','100yen'), ('grape2','200yen'), ('grape3','300yen'), ] cur.executemany("insert into fruits values(?,?)", data)
複数レコードの更新
sql = "update tweet set word = 'Yamaoka' where id = 2;" cur.execute(sql) #sql = "update テーブル名 set カラム名 = 値 where 条件;"
レコードの削除
cur.execute('delete from fruits where name=?', ('grape1',)) #カーソルオブジェクト.execute('delete from テーブル名 where 条件指定)
テーブルの中身を削除
cur.execute('delete from fruits') #カーソルオブジェクト.execute('delete from テーブル名')
テーブルの削除
cur.execute('drop table fruits') #カーソルオブジェクト.execute('drop table テーブル名')
テーブルがすでに存在しなければ作製
sql = "create table if not exists fruits(name text, price text);" cur.execute(sql)
テーブルがすでに存在しなければ作製②
cur.execute(""" SELECT COUNT(*) FROM sqlite_master WHERE TYPE='table' AND name='テーブル名' """) if cur.fetchone()[0] == 0: sql = "create table テーブル名(id INTEGER PRIMARY KEY AUTOINCREMENT, word text);" cur.execute(sql) print('create')
条件を指定して参照
cur.execute("select * from fruits where id >= 2") #2以上 select_data = cur.fetchall() for row in select_data: print(row[1]) または k = "キーワード" data = cur.execute("select * from fruits where keyword = ?",(k,)) for row in data: print(row[1]) word_list.append(row[1])
条件を指定して参照(変数使用)
num = 2 cur.execute("select * from fruits where id >= ?",(num,)) select_data = cur.fetchall() for row in select_data: print(row[1])
条件を指定+最大値を求める
q = "キーワード" sql = "select max(カラム名) from テーブル名 where カラム名(条件指定対象) = ?" data = cur.execute(sql,(q,)) for a in data: print(a)
条件を指定して参照(変数使用)②
hoge = "キーワード" sql = "select * from テーブル名 where カラム名 = ?" data = cur.execute(sql,(hoge,)) for a in data: print(a[2])
条件を指定して最初の1件のみ参照(変数使用)
q = "キーワード" #data = cur.execute("select * from fruits where keyword = ?",(q,)) data = cur.execute("select * from fruits where keyword = ? limit 1",(q,))
あるレコードの存在の確認
q = キーワード data = cur.execute("select exists(select * from fruits where screen_name = ?)",(q,)) for row in data: #row = タプル型 if row[0] == False: print("レコードは存在しません") else: print("レコードは存在します")
カラムの追加
cur.execute("alter table fruits add column image_id integer") #alter table テーブル名 add column カラム名 値の種類
0 Comments