日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库实践

發(fā)布時間:2025/6/17 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、python操作數據庫學習筆記

1、DB-API

1.1、Python的DB-API,為大多數的數據庫實現了接口,使用它連接各數據庫后,就可以用相同的方式操作各數據庫。

1.2、Python DB-API的使用流程:

  • 引入API模塊
  • 獲取與數據庫的連接
  • 執(zhí)行sql語句和存儲過程
  • 關閉數據庫連接

2、MySQL的安裝

?

為了用DB-API編寫MySQL腳本,必須確保已經安裝了MySQL。復制以下代碼,并執(zhí)行:

?

#!/usr/bin/python # -*- coding: UTF-8 -*-import MySQLdb

?

如果執(zhí)行后的輸出結果如下所示,意味著你沒有安裝 MySQLdb 模塊:

?

Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb

?

?

安裝MySQLdb,請訪問?http://sourceforge.net/projects/mysql-python?,(Linux平臺可以訪問:https://pypi.python.org/pypi/MySQL-python)從這里可選擇適合您的平臺的安裝包,分為預編譯的二進制文件和源代碼安裝包。

?

如果您選擇二進制文件發(fā)行版本的話,安裝過程基本安裝提示即可完成。如果從源代碼進行安裝的話,則需要切換到MySQLdb發(fā)行版本的頂級目錄,并鍵入下列命令:

?

$ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2.tar $ cd MySQL-python-1.2.2 $ python setup.py build $ python setup.py install
注意:請確保您有root權限來安裝上述模塊。


?

?3、?數據庫連接

連接數據庫前,請先確認以下事項:連接數據庫TESTDB使用的用戶名為 "testuser" ,密碼為 "test123",你可以可以自己設定或者直接使用root用戶名及其密碼。

以下實例鏈接Mysql的TESTDB數據庫,對應了DB-API的四個步驟:#?encoding: utf-8

# 1 引入API模塊 import MySQLdb# 2 獲取與數據庫的連接 # 打開數據庫連接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )# 3 執(zhí)行SQL語句和存儲過程 # 使用cursor()方法獲取操作游標 cursor = db.cursor() # 使用execute方法執(zhí)行SQL語句 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法獲取一條數據庫。 data = cursor.fetchone() print "Database version : %s " % data# 4 關閉數據庫連接 # 關閉數據庫連接 db.close()

執(zhí)行結果顯示:

Database version : 5.0.45

?

4、 創(chuàng)建數據庫表

我們嘗試建立一個自定義的數據庫表:

數據庫表名稱:EMPLOYEEEMPLOYEE

數據表字段為:FIRST_NAME,LAST_NAME,AGE,SEX 和 INCOME。

# encoding: utf-8 import MySQLdb # 打開數據庫連接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法獲取操作游標 cursor = db.cursor() # 如果數據表已經存在使用 execute() 方法刪除表。 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 創(chuàng)建數據表SQL語句 sql = """CREATE TABLE EMPLOYEE (FIRST_NAME CHAR(20) NOT NULL,LAST_NAME CHAR(20),AGE INT, SEX CHAR(1),INCOME FLOAT )""" cursor.execute(sql) # 關閉數據庫連接 db.close()

5 、插入數據操作

使用SQL INSERT 語句向數據庫表 EMPLOYEE 插入記錄:

? ??

# encoding: utf-8 import MySQLdb # 打開數據庫連接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法獲取操作游標 cursor = db.cursor() # SQL 插入語句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME)VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try:# 執(zhí)行sql語句 cursor.execute(sql)# 提交到數據庫執(zhí)行 db.commit() except:# Rollback in case there is any error db.rollback() # 關閉數據庫連接 db.close()

在這里提幾個重要的點:

1) 請 注意一定要有conn.commit()這句來提交事務,要不然不能真正的插入數據。

2)dollback()是回滾操作,回滾(Rollback)指的是程序或數據處理錯誤,將程序或數據恢復到上一次正確狀態(tài)的行為。回滾包括程序回滾和數據回滾等類型。

?

6 數據庫查詢操作

Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。

  • fetchone(): 該方法獲取下一個查詢結果集。結果集是一個對象
  • fetchall(): 接收全部的返回結果行.
  • rowcount: 這是一個只讀屬性,并返回執(zhí)行execute()方法后影響的行數。

查詢EMPLOYEE表中salary(工資)字段大于1000的所有數據:

# encoding: utf-8 import MySQLdb # 打開數據庫連接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法獲取操作游標 cursor = db.cursor() # SQL 查詢語句 sql = "SELECT * FROM EMPLOYEE \WHERE INCOME > '%d'" % (1000) try:# 執(zhí)行SQL語句 cursor.execute(sql)# 獲取所有記錄列表results = cursor.fetchall()for row in results:fname = row[0]lname = row[1]age = row[2]sex = row[3]income = row[4]# 打印結果print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \(fname, lname, age, sex, income ) except:print "Error: unable to fecth data" # 關閉數據庫連接 db.close()

執(zhí)行結果顯示:

fname=Mac, lname=Mohan, age=20, sex=M, income=2000

?

7 、數據庫更新操作

更新操作用于更新數據表的的數據,以下實例將 TESTDB表中的 SEX 字段全部修改為 'M',AGE 字段遞增1:

# encoding: utf-8 import MySQLdb # 打開數據庫連接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法獲取操作游標 cursor = db.cursor() # SQL 更新語句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1WHERE SEX = '%c'" % ('M') try:# 執(zhí)行SQL語句 cursor.execute(sql)# 提交到數據庫執(zhí)行 db.commit() except:# 發(fā)生錯誤時回滾 db.rollback() # 關閉數據庫連接 db.close()

8 常用函數

下面總結一下常用的函數:

1) Connect()?方法用于創(chuàng)建數據庫的連接,里面可以指定參數:用戶名,密碼,主機等信息。這只是連接到了數據庫,要想操作數據庫需要創(chuàng)建游標。

2)commit() 提交

3)rollback() 回滾

4)cursor用來執(zhí)行命令的方法:

callproc(self, procname, args):用來執(zhí)行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數

execute(self, query, args):執(zhí)行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數

executemany(self, query, args):執(zhí)行單挑sql語句,但是重復執(zhí)行參數列表里的參數,返回值為受影響的行數

nextset(self):移動到下一個結果集

5)cursor用來接收返回值的方法:

fetchall(self):接收全部的返回結果行.

fetchmany(self, size=None):接收size條返回結果行.如果size的值大于返回的結果行的數量,則會返回cursor.arraysize條數據.

fetchone(self):返回一條結果行.

6)scroll(self, value, mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果 mode='absolute',則表示從結果集的第一行移動value條.

二、建立數據庫

1、要求:

?

2、實操:

a、把文件寫入數據庫

代碼如下:

# -*- coding: utf-8 -*- """ Created on Sun Jun 2 12:07:50 2019@author: Amao """import sqlite3 import openpyxl #import pandas as pd lists=sqlite3.connect('D:/python/MyDatabase.db') c=lists.cursor() #c.execute('''CREATE TABLE rankg("序號","排名","學校名稱","省市","總分","生源質量","培養(yǎng)結果","科研規(guī)模","科研質量","頂尖成果","頂尖人才","科技服務","產學研合作","成果轉化")''') #import pandas as pd#def csv_to_xlsx_pd(): #csv = pd.read_csv('D:/python/CrawUniv.csv', encoding='gbk') #csv.to_excel('D:/python/CrawUniv.xlsx', sheet_name='data') listinsheet=openpyxl.load_workbook(r'D:/我的文件/Python作業(yè)/CrawUniv.xlsx') datainlist=listinsheet.active #獲取excel文件當前表格 data_truck=('''INSERT INTO rankg("序號","排名","學校名稱","省市","總分","生源質量","培養(yǎng)結果","科研規(guī)模","科研質量","頂尖成果","頂尖人才","科技服務","產學研合作","成果轉化") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)''') for row in datainlist.iter_rows(min_row=2,max_col=14,max_row=datainlist.max_row): #使excel各行數據成為迭代器cargo=[cell.value for cell in row] #敲黑板!!使每行中單元格成為迭代器c.execute(data_truck,cargo) #敲黑板!寫入一行數據到數據庫中表rankf for row in c.execute('SELECT * FROM rankg ORDER BY "序號"'):print(row)lists.commit() lists.close()

結果:

?

轉載于:https://www.cnblogs.com/1234ai/p/10965674.html

總結

以上是生活随笔為你收集整理的数据库实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。