導航:首頁 > 編程大全 > python讀取資料庫

python讀取資料庫

發布時間:2023-11-15 03:56:07

㈠ 求助用python從資料庫取數據動態生成表格的方法

一、可使用的第三方庫
python中處理excel表格,常用的庫有xlrd(讀excel)表、xlwt(寫excel)表、openpyxl(可讀寫excel表)等。xlrd讀數據較大的excel表時效率高於openpyxl,所以我在寫腳本時就採用了xlrd和xlwt這兩個庫。介紹及下載地址為:http://www.python-excel.org/ 這些庫文件都沒有提供修改現有excel表格內容的功能。一般只能將原excel中的內容讀出、做完處理後,再寫入一個新的excel文件。
二、常見問題
使用python處理excel表格時,發現兩個個比較難纏的問題:unicode編碼和excel中記錄的時間。
因為python的默認字元編碼都為unicode,所以列印從excel中讀出的中文或讀取中文名的excel表或sheet時,程序提示錯誤UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)。這是由於在windows中,中文使用了gb2312編碼方式,python將其當作unicode和ascii來解碼都不正確才報出的錯誤。使用VAR.encode('gb2312')即可解決列印中文的問題。(很奇怪,有的時候雖然能列印出結果,但顯示的不是中文,而是一堆編碼。)若要從中文文件名的excel表中讀取數據,可在文件名前加『u』表示將該中文文件名採用unicode編碼。
有excel中,時間和日期都使用浮點數表示。可看到,當『2013年3月20日』所在單元格使用『常規』格式表示後,內容變為『41353』;當其單元格格式改變為日期後,內容又變為了『2013年3月20日』。而使用xlrd讀出excel中的日期和時間後,得到是的一個浮點數。所以當向excel中寫入的日期和時間為一個浮點數也不要緊,只需將表格的表示方式改為日期和時間,即可得到正常的表示方式。excel中,用浮點數1表示1899年12月31日。
三、常用函數
以下主要介紹xlrd、xlwt、datetime中與日期相關的函數。

import xlrd
import xlwt
from datetime

def testXlrd(filename):
book=xlrd.open_workbook(filename)
sh=book.sheet_by_index(0)
print "Worksheet name(s): ",book.sheet_names()[0]
print 'book.nsheets',book.nsheets
print 'sh.name:',sh.name,'sh.nrows:',sh.nrows,'sh.ncols:',sh.ncols
print 'A1:',sh.cell_value(rowx=0,colx=1)
#如果A3的內容為中文
print 'A2:',sh.cell_value(0,2).encode('gb2312')

def testXlwt(filename):
book=xlwt.Workbook()
sheet1=book.add_sheet('hello')
book.add_sheet('word')
sheet1.write(0,0,'hello')
sheet1.write(0,1,'world')
row1 = sheet1.row(1)
row1.write(0,'A2')
row1.write(1,'B2')

sheet1.col(0).width = 10000

sheet2 = book.get_sheet(1)
sheet2.row(0).write(0,'Sheet 2 A1')
sheet2.row(0).write(1,'Sheet 2 B1')
sheet2.flush_row_data()

sheet2.write(1,0,'Sheet 2 A3')
sheet2.col(0).width = 5000
sheet2.col(0).hidden = True

book.save(filename)

if __name__=='__main__':
testXlrd(u'你好。xls')
testXlwt('helloWord.xls')
base=datetime.date(1899,12,31).toordinal()
tmp=datetime.date(2013,07,16).toordinal()
print datetime.date.fromordinal(tmp+base-1).weekday()

㈡ python從資料庫中讀取某列的數值

select bug_type,bug_severity,count(bug_type),ft_id from tm_bug group by ft_id,bug_type,bug_severity
查找表 tm_bug ,欄位1名稱為(bug_type),欄位2名稱為(bug_severity),欄位3名稱為(ft_id),行數,,以為具有相同欄位的ft_id,bug_type,bug_severity進行分組,

㈢ python怎麼打開資料庫文件

以打開mysql資料庫為例來說明:
#!/usr/bin/python
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
#打開游標
cursor = db.cursor()
# 執行資料庫查詢
cursor.execute("SELECT VERSION()")
# 獲取結果集的第一行
data = cursor.fetchone()
print "Database version : %s " % data
# 關閉連接
db.close()

㈣ 從資料庫里python獲取數據存到本地資料庫

python項目中從介面獲取數據並存入本地資料庫
首先用postman測試介面
根據請求方式將數據存入資料庫中
首先用postman測試介面
通過url,選擇相應的請求方式,頭部,數據格式,點擊send看能否獲取數據
根據請求方式將數據存入資料庫中

下面是post請求方式def get() URL = '' HEADERS = {'Content-Type': 'application/json'} JSON = {} response = request.post(URL,headers=HEADERS,json=JSON) #json.loads()用於將str類型的數據轉成dict jsondata = json.load(response.txt) for i in jsondata: date1 = i[data] type1 = i[type] ... #拼接sql語句 sql="" conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable") cursor=conn.cursor() ursor.execute(sql)

㈤ python如何訪問資料庫

1.背景:

python提供了很多資料庫介面, 常用的資料庫有 MS SQL Server /mysql /oracle 等。

打開鏈接 https://wiki.python.org/moin/DatabaseInterfaces

是python 關於資料庫介面的一個總結 , 可以看到支持的訪問的資料庫系統

2.模塊:

python 主要是通過模塊和資料庫連接的。

2.1 安裝模塊:

如果使用anconda,本身就會集合很多模塊,不需要手動安裝。如果用pycharm就要手動安裝模塊。

安裝模塊流程:

下載模塊擴展包放到路徑下——>cmd找到相應路徑——> pip install +擴展包名字

下面列舉一些常用連接資料庫的模塊:pymssql / sqlite3/ PyMySQL/pyodbc/odbc/adodbapi

不同模塊連接的資料庫不同, 支持的版本系統有的也不一樣。但是大體用法都是相近的, 因為有DB-API

相關推薦:《Python教程

3.Python DB-API

3.1背景:

在沒有DB-API 之前, 不同資料庫有不同的資料庫介面程序, 這就導致python 訪問 database 的介面程序非常混亂。如果我們學習了python 訪問 mysql 的介面程序, 然後要切換到另一個資料庫上, 我們還要在學習另外一個資料庫的介面程序。python DB-API就是為了解決介面程序混亂而生成的。有了DB-API, 在不同資料庫上移植代碼就變得簡單的多了。

3.2Python DB-API:

Python 定義了一套操作資料庫的 DB-API 介面,它是一個規范,定義了一系列必須的對象和資料庫存取方式,以便為不同的底層資料庫系統提供一致的訪問介面

這個鏈接就是python 官方給定的 DB-API 的說明 https://www.python.org/dev/peps/pep-0249/

3.3 Python DB--API的內容:

連接對象:

?Connect()創建連接:host/server /user/password/db connect方法生成一個connect對象, 我們通過這個對象來訪問資料庫。符合標準的模塊都會實現connect方法。

?close():關閉連接

?commit():提交當前事務。做出某些更改後確保已經進行了提交,這樣才可以將這些修改真正地保存到database中

?rollback() 回滾上一次調用 commit()以來對資料庫所做的更改

?cursor():創建游標。系統為用戶開通的一個數據緩沖區,用於存放SQL語句執行結果。cursor游標是有狀態的,它可以記錄當前已經取到結果的第幾個記錄了,因此,一般你只可以遍歷結果集一次。在上面的情況下,如果執行fetchone()會返回為空。這一點在測試時需要注意

游標對象:

?Execute()執行一個資料庫查詢或命令。 execute 執行sql 語句之後運行的結果不會直接output 出來 , 而是放到了一個緩存區, 要用 fetch語句+print 可以查詢sql運行的結果

?fetchone ()得到結果集的下一行

?fetchmany(size)得到結果集的下幾行

?fetchall()返回結果集中剩下的所有行

?rowcount 返回影響的行數

?Close()關閉游標對象

3.4Python DB--API的工作原理及流程:

如圖所示如果把python 和資料庫比作兩個不同的地點, connection 就是路, 能連接python和database。cursor就像在路上行駛的小貨車, 可以用於執行sql 語句, 以及存儲sql 運行的結果。

流程:

4.MS SQL Server 示例:

4.1 導入模塊、創建連接:

4.2 創建游標: 游標創建之後就可以對資料庫進行查詢更改了!

4.3對數據進行操作(創建表、插入行、更新數據、增加列、刪除行、列、表):

4.4 查詢 獲取行:

5.其他:

使用游標的時候要注意, 每次連接只能有一個游標查詢處於活躍狀態。 code演示:

execute()循環和 executemany() 插入100000 條數據測速:

閱讀全文

與python讀取資料庫相關的資料

熱點內容
寧波ug編程培訓中心哪裡好 瀏覽:565
描述性別是屬於什麼數據 瀏覽:752
聽力障礙人群用哪些app 瀏覽:932
中國郵政ems微信號 瀏覽:699
win10刪除更新補丁 瀏覽:870
哪裡有賣二手電筒腦的app 瀏覽:139
希臘雅典數據中心在哪裡 瀏覽:513
pad背景文件 瀏覽:608
dellwin7開機圖片文件 瀏覽:638
linux進度條定時 瀏覽:619
重建路徑文件 瀏覽:642
買房提前准備什麼文件 瀏覽:926
cmd查看oracle版本 瀏覽:767
蘋果用什麼軟體搜番號 瀏覽:409
app數據託管多少錢一年 瀏覽:907
PE系統考文件很慢 瀏覽:284
qt文件夾路徑輸入方式 瀏覽:773
游戲app怎麼獲客 瀏覽:721
inhealthapp連不上 瀏覽:611
腳本錯誤win10 瀏覽:790

友情鏈接