任何應用都需要持久化儲存。一般有三種基礎的儲存機制:檔案、資料庫系統及混合型別。
1. 資料庫基本操作和sql
資料庫使用檔案系統作為基本的持久化儲存,可以是普通的作業系統檔案、專用的作業系統檔案、原始的磁碟分割槽等。多數資料庫系統提供命令列工具,可執行sql語句或查詢。
關係型資料庫管理系統(rdbms)可管理多個資料庫。mysql是基於服務的rdbms,其有乙個伺服器程序始終執行等待命令列輸入。
1.1 sql
資料庫命令和查詢操作通過sql語句進行。大部分資料庫不區分大小寫,一般來說資料庫關鍵字使用大寫,命令結尾使用分號表示結束。
sql是結構化查詢語言,是一種用來操作rdbms的資料庫語言。當前關係型資料庫都支援使用sql語言進行操作,也就是說可以通過 sql 操作 oracle,sql server,mysql,sqlite 等等所有的關係型的資料庫。
sql語句主要分為:
dql:資料查詢語言,用於對資料進行查詢,如select
dml:資料操作語言,對資料進行增加、修改、刪除,如insert、udpate、delete
tpl:事務處理語言,對事務進行處理,包括begin transaction、commit、rollback
dcl:資料控制語言,進行授權與許可權**,如grant、revoke
ddl:資料定義語言,進行資料庫、表的管理等,如create、drop
ccl:指標控制語言,通過控制指標完成表的操作,如declare cursor
1.2 python的db-api
2. 資料庫連線
① 使用db-api的connect()函式傳入相關引數連線資料庫並返回connection物件
② 建立cursor()物件呼叫execute()方法用來執行相關sql語句,並進行事務提交(增刪改等)
③ 關閉cursor()和connection()物件(一般使用try…except…finally實現)
2.1 mysql連線
connection 物件
用於建立與資料庫的連線
建立物件:呼叫connect()方法,conn=connect(引數列表)
引數host:連線的mysql主機,如果本機是』localhost』
引數port:連線的mysql主機的埠,預設是3306
引數database:資料庫的名稱
引數user:連線的使用者名稱
引數password:連線的密碼
connection物件的方法
close()關閉連線
commit()提交,用於修改資料後進行事務提交(增刪改)
cursor()返回cursor物件,用於執行sql語句並獲得結果
cursor物件
用於執行sql語句,使用頻度最高的語句為select、insert、update、delete。
獲取cursor物件:呼叫connection物件的cursor()方法,cs1=conn.cursor()
注意將sql語句引數化,避免sql注入。引數化後,執行時要給args傳入引數。
cursor物件的方法
close()關閉
execute(operation [, parameters ])執行語句,返回受影響的行數,主要用於執行insert、update、delete語句,也可以執行create、alter、drop等語句
fetchone()執行查詢語句時,獲取查詢結果集的第乙個行資料,返回乙個元組
fetchall()執行查詢時,獲取結果集的所有行,一行構成乙個元組,再將這些元組裝入乙個元組返回
物件的屬性
rowcount唯讀屬性,表示最近一次execute()執行後受影響的行數
connection獲得當前連線物件
# mysql資料庫
import pymysql
# 建立connection物件
conn = pymysql.connect(host="localhost", port=3306, database="python_test",
user="yuxi", password="199618", charset="utf8")
if conn:
print("連線資料庫成功!")
# 建立cursor物件
cursor = conn.cursor()
# 定義sql執行語句
select_sql = """select * from students;"""
# 使用游標物件執行sql語句,返回受影響的行數
count = cursor.execute(select_sql)
print("查出%d條資料,資料如下:" % count)
for info in range(count):
print(cursor.fetchone())
# 關閉游標物件
cursor.close()
# 關閉connection物件
conn.close()
2.2 postgresql連線
import psycopg2
# 建立connection物件連線資料庫
conn = psycopg2.connect(database='testdb', host='localhost', user='fengdi', password='199618', port=5432)
# 建立游標物件
cursor = conn.cursor()
# 使用游標物件執行操作:建立資料表
cursor.execute('''create table company
(id int primary key not null,
name text not null,
age int not null,
address char(50),
salary real);''')
print('資料表建立成功!')
# 事務提交
conn.commit()
# 關閉連線
conn.close()
2.3 sqlite3連線
import sqlite3
# python連線sqlite3
# 建立connection物件連線資料庫,檔案不存在則會在當前目錄新建
conn = sqlite3.connect('sqlite-test.db')
# 建立游標物件
cursor = conn.cursor()
# 執行sql語句,建立user表
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
# 執行sql語句,插入一條記錄
cursor.execute('insert into user (id, name) values (\'1\', \'fengdi\')')
data = cursor.rowcount
print('插入記錄:%d條' % data)
# 關閉游標
cursor.close()
# 事務提交:對資料庫、資料表進行更改後需要提交
conn.commit()
# 關閉資料庫連線
conn.close()
標籤:語句,python,資料庫,cursor,物件,sql,conn
pymysql 模組快速插入資料庫(python)
先建立database資料庫 建立表字段 再帶入 插入資料 檔名order2.py import random def order1 sql for s in range 1,10 name random.choice 趙錢孫李周吳鄭王 random.choice 紅明嬌瑞睿蕊星三 age rand...
python資料庫模組 python 資料庫模組
python 資料庫介面模組 swordsp 2007 01 16 13 36 01 本條目收集了 python 中的常用資料庫介面模組,包括各種主流關聯式資料庫和一些通用介面 如無特別註明,均實現 或部分實現 了 db api 標準。更廣泛的 python 資料庫技術參見 python 資料庫開發...
python資料庫命令 Python資料庫操作
前言 連線資料庫 獲得當前工作目錄 import os current folder os.getcwd 生成資料庫檔案路徑 path current folder output test.mdb 資料庫連線 def init self,path self.conn pyodbc.connect r...