Python訪問資料庫 學習筆記

2021-07-14 14:26:01 字數 3592 閱讀 3752

1、使用sqlite:python內建

**演示:列印出成績在60-100之間的使用者名稱

import os, sqlite3

db_file = 'db/school.db'

if os.path.isfile(db_file):

os.remove(db_file)

# 初始資料

:conn = sqlite3.connect(db_file)

cursor = conn.cursor()

cursor.execute('create table user(id varchar(20) primary key, name varchar(20), score int)')

cursor.execute(r"insert into user values ('a-001', 'adam', 95)")

cursor.execute(r"insert into user values ('a-002', 'bart', 62)")

cursor.execute(r"insert into user values ('a-003', 'lisa', 78)")

def get_score_in(low, high):

cursor.execute(r"select name from user where score>? and score<? order by score" , (low,high)) # 

用sql

排序# cursor.execute(r"s

elect * from user where score>? and score<?" , (low,high))

result = cursor.fetchall()

# result = sorted(result,key=lambda t:t[2])   # 

用python

排序# names = [row[1] for row in result]  # 

遍歷result

,每一次遍歷結果記為

row ,

取所有的

row[1]

print(result)

get_score_in(60,100)   # 

方法的定義必須在使用之前

cursor.close()

conn.commit()

conn.close()

2、使用mysql(只有第一步連線資料庫與sqlite不同)

# -*- coding: utf-8 -*-

import mysql.connector

# 初始資料

:conn = mysql.connector.connect(

user=

'root',

password=

'password',

database=

'test')

# 建立游標來執行

sql語句

cursor = conn.cursor()

# cursor.execute('create table user(id varchar(20) primary key, name varchar(20), score int)')

# cursor.execute(r"insert into user values ('a-001', 'adam', 95)")

# cursor.execute(r"insert into user values ('a-002', 'bart', 62)")

# cursor.execute(r"insert into user values ('a-003', 'lisa', 78)")

def get_score_in(low, high):

cursor.execute(

r"select name from user where score>%s and score<%s order by score", (low, high)) 

# 用sql

排序,mysql

的佔位符是

%s,sqlite

的佔位符是

?# cursor.execute(r"select * from user where score>? and score<?" , (low,high))

result = cursor.fetchall()

# result = sorted(result,key=lambda t:t[2])   # 

用python

排序# names = [row[1] for row in result]  # 

遍歷result

,每一次遍歷結果記為

row ,

取所有的

row[1]

print(result)

get_score_in(

60,100)   

# 方法的定義必須在使用之前

cursor.close()

conn.commit()

conn.close()

orm框架的作用就是把資料庫表的一行記錄與乙個物件互相做自動轉換。

from sqlalchemy.ext.declarative import  declarative_base

from sqlalchemy.orm 

import sessionmaker

from sqlalchemy 

import *

# from sqlalchemy import column,string,int,create_engine

# 建立物件的基類

base = declarative_base()

class user(base):

__tablename__ = 

'user'   

# 與資料庫表名一致

id = column(string(

20),

primary_key=

true)

name = column(string(

20))

score = column(int)

# 初始化資料庫連線

engine = create_engine(

'mysql+mysqlconnector://root:password@localhost:3306/test')

dbsession = sessionmaker(

bind=engine) 

# dbsession

相當於mysql.connector.connection

session = dbsession()

# new_user = user(id='2',name='bob',score=98)

## session.add(new_user)

user = session.query(user).filter(user.id==

'5').one()

print(user.name)

session.commit() 

# 一定要記得提交

session.close()

宣告:學習廖雪峰的python教程學習筆記,感謝micheal liao.

Python學習筆記 ADO訪問資料庫

因為工作中用到ado訪問工業資料庫,在這做乙個記錄。ado activex data objects,activex資料物件 是microsoft提出的應用程式介面 api 用以實現訪問關係或非關聯式資料庫中的資料。ado的五個基本物件型別 connection object連線物件 連線物件經常用...

Python學習筆記(2) 資料庫訪問

本來打算繼續用access的,但費了非常大的勁,還是沒有搞定。回過頭,發現使用sqlite,簡單到令人髮指。乾脆,把c 的commoncode往這邊遷移,先把accessdb搬過來再說。類結構和c 版完全一樣 訪問介面idb,由sqlitedb sqlserverdb等實現,而accessdb是對外...

Python筆記 訪問資料庫

匯入mysql驅動 import mysql.connector 注意把password設為你的root口令 conn mysql.connector.connect user root password password database test cursor conn.cursor 建立use...