第13章 資料庫支援

2021-08-28 05:06:14 字數 1820 閱讀 4263

13.1 python資料庫api

13.2 sqlite和pysqlite

sqlite小型資料庫引擎,可直接使用本地檔案,而不需要集中式資料庫儲存機制。

使用模組sqlite3實現的pysqlite。

13.2.1 起步

>>> 

import sqlite3

#建立直接到資料庫檔案的連線

>>> conn = sqlite3.connect('somedatabase.db')

#從連線獲得游標,游標可用來執行sql查詢

>>> curs = conn.cursor()

#修改了資料,提交修改

>>> conn.commit()

#關閉連線

>>> conn.close()

>>>

13.2.2 資料庫應用程式示例

import sqlite3

defconvert

(value):

if value.startswith('~'):

return value.strip('~')

ifnot value:

value = '0'

return float(value)

conn = sqlite3.connect('food.db')

curs = conn.cursor()

curs.execute('''

create table food (

id text primaky key,

desc text,

water float,

kcal float,

protein float,

fat float,

ash float,

carbs float,

fiber float,

sugar float

)''')

query = 'insert into food values (?,?,?,?,?,?,?,?,?,?)'

field_count = 10

for line in open('abbrev.txt'):

fields = line.split('^')

vals = [convert(f) for f in fields[:field_count]]

curs.execute(query, vals)

conn.commit()

conn.close()

import sqlite3

conn = sqlite3.connect('food.db')

curs = conn.cursor()

query = 'select * from food where id = "07276"'

print(query)

curs.execute(query)

print("curs.description:",curs.description)

names = [f[0] for f in curs.description]

print("names:", names)

for row in curs.fetchall():

print("row:",row)

print("zip(names, row):",zip(names, row))

for pair in zip(names, row):

print('{}: {}'.format(*pair))

print()

第13章 資料庫支援

為了解決不同資料庫模組的介面 api 不同的問題,指定了標準資料庫api db api 1.全域性變數 所有與db api2.0相容的資料庫模組必須包含3個全域性變數 apilevel 使用的python api版本,是乙個字串常量。db api 2.0指出,這個變數的值為 1.0 或 2.0 如果...

第13章 資料庫連線池(Druid)

spring boot 系列學習記錄 druid是乙個關係型資料庫連線池,它是阿里巴巴的乙個開源專案。druid支援所有jdbc相容資料庫,包括了oracle mysql postgresql sql server h2等。druid在監控 可擴充套件性 穩定性和效能方面具有明顯的優勢。通過drui...

資料庫實驗第13周

有待改善的學生表。介面 增 刪 我剛開始想刪乙個以前存的,發現會報錯,在sql server中輸入對應的刪除語句,發現是因為該學生有選課記錄。然後我就刪除的新插入的那個學生,結果成功了,因為該學生還沒有選課記錄。改 查 增刪改查 private void buttoninsert click obj...