程式語言:Python
Package:sqlite3
官方文件
SQL 基本指令
功能:處理分析資料庫
Package:sqlite3
官方文件
SQL 基本指令
功能:處理分析資料庫
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# Create table
cursor.execute('''CREATE TABLE stocks
(date text, trans text, symbol text, qty real, price real)''')
# Insert a row of data
cursor.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
# Save (commit) the changes
conn.commit()
# We can also close the connection if we are done with it.
# Just be sure any changes have been committed or they will be lost.
conn.close()
取得 columns name
# Cursor Objects # tuple 的第一個值,其餘皆為 None,為了相容 Python DB API # 需執行 SELECT, description 才會被設定 colNames = [colname[0] for colname in cursor.description]
在 RAM 中建立資料庫
con = sqlite3.connect(":memory:")
安全性,絕不要用 python 處理字串的方式查詢值或給值
# 絕不要這麼做,不安全
symbol = 'RHAT'
cursor.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)
# 請用以下方式
t = ('RHAT',)
cursor.execute('SELECT * FROM stocks WHERE symbol=?', (t,))
# 但可以用來取代 SQL Object,因 ? 無法用在 SQL Object 上
cursor.execute("SELECT COUNT(Name) FROM {} WHERE Name=?".format(group), (food,))
cursor.execute("INSERT INTO {} VALUES(?, ?)".format(group), (food, 1))
cursor.execute("UPDATE {} SET Times=? WHERE Name=?".format(group),
(times_before + 1, food))
得到資料
for row in cursor.execute('SELECT * FROM stocks ORDER BY price'):
print(row)
重覆建立 table
可用來判斷 table 是否已存在cursor.execute('''CREATE TABLE ts( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTERGER)''')
# Traceback (most recent call last):
# File "", line 1, in
# sqlite3.OperationalError: table ts already exists
留言
張貼留言