當前位置:首頁 » 編程語言 » python調用資料庫

python調用資料庫

發布時間: 2022-07-09 14:14:05

1. python如何訪問資料庫

1.背景:

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

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

是python 關於資料庫介面的一個總結 , 可以看到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 條數據測速:

2. 怎麼用python連接mysql資料庫

在 Python 語言環境下我們這樣連接資料庫。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")

但是連接資料庫的背後發生了什麼呢?


答案

當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由MySQL 協議規定。MySQL 協議:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。

  • MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。

  • 2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。

    3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。

    4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。

3. 調用之前的准備工作,包括學習python語言的基礎知識、調用python調用資料庫的條件以及如何調用

挑用這些的准備工作包括學習的自製劇時,我們首先把機子制秩序好了才能走啊,做好跳舞用的准備工作,我們一定要認真學習,把學習當做自己的功課,學好了知識才能做奇葩的各個方面。

4. 如何使用python連接mysql資料庫

在 Python 語言環境下我們這樣連接資料庫。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")

但是連接資料庫的背後發生了什麼呢?


答案

當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由MySQL 協議規定。MySQL 協議:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。

  • MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。

  • 2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。

    3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。

    4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。

5. 如何使用python對資料庫進行操作

你可以訪問Python資料庫介面及API查看詳細的支持資料庫列表。不同的資料庫你需要下載不同的DB API模塊,例如你需要訪問Oracle資料庫和Mysql數據,你需要下載Oracle和MySQL資料庫模塊。
DB-API 是一個規范. 它定義了一系列必須的對象和資料庫存取方式, 以便為各種各樣的底層資料庫系統和多種多樣的資料庫介面程序提供一致的訪問介面 。
Python的DB-API,為大多數的資料庫實現了介面,使用它連接各資料庫後,就可以用相同的方式操作各資料庫。
Python DB-API使用流程:

引入 API 模塊。
獲取與資料庫的連接。
執行SQL語句和存儲過程。
關閉資料庫連接。

什麼是MySQLdb?

MySQLdb 是用於Python鏈接Mysql資料庫的介面,它實現了 Python 資料庫 API 規范 V2.0,基於 MySQL C API 上建立的。

如何安裝MySQLdb?

為了用DB-API編寫MySQL腳本,必須確保已經安裝了MySQL。復制以下代碼,並執行:
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import MySQLdb

如果執行後的輸出結果如下所示,意味著你沒有安裝 MySQLdb 模塊:
Traceback (most recent call last):
File "test.py", line 3, in <mole>
import MySQLdb
ImportError: No mole named MySQLdb

6. python使用資料庫

增加一條數據

importpymysql

#返回Connection對象
#host="localhost"
con=pymysql.connect(host="192.168.31.28",
port=3306,user="atguigu",
password="atguigu",
db="atguigudb",
charset="utf8")
#返回cursor對象
cursor=con.cursor()
#SQL語言-SQL語句
sql="insertintostudents(name)value('李四')"
#插入數據
cursor.execute(sql)
#提交數據,沒有提交就沒有數據
con.commit()
#關閉釋放資源
cursor.close()
#關閉資源
con.close()

修改數據

importpymysql
#修改任意一條數據

#返回Connection對象
conn=pymysql.connect(
host="192.168.31.28",
db="atguigudb",
port=3306,
user="atguigu",
password="atguigu",
charset="utf8"
)
cursor=conn.cursor()
sql="updatestudentssetname='郭靖'whereid=1"
count=cursor.execute(sql)
print("count=",count)
#提交正常數據物理上修改了
conn.commit()
cursor.close()
conn.close()

刪除數據

importpymysql
#修改任意一條數據

#返回Connection對象
conn=pymysql.connect(
host="192.168.31.28",
db="atguigudb",
port=3306,
user="atguigu",
password="atguigu",
charset="utf8"
)
cursor=conn.cursor()
sql="deletefromstudentswhereid=20"
count=cursor.execute(sql)
print("count=",count)
conn.commit()
cursor.close()
conn.close()

查詢一條數據

importpymysql
try:
conn=pymysql.connect(
host='192.168.31.28',
port=3306,
db='atguigudb',
user='atguigu',
passwd='atguigu',
charset='utf8'
)
cursor=conn.cursor()
cursor.execute('select*fromstudentswhereid=3')
#返回滿足這個條件的這個數據,如果有多條返回第一條,並且封裝元組中
result=cursor.fetchone()
print(result)
foriinresult:
print(i)
cursor.close()
conn.close()
exceptExceptionase:
print(e.message)

查詢多條數據

importpymysql
try:
conn=pymysql.connect(
host='192.168.31.28',
port=3306,
db='atguigudb',
user='atguigu',
passwd='atguigu',
charset='utf8'
)
cursor=conn.cursor()
cursor.execute('select*fromstudents')
#返回元組,如果多條數據,元組裡面嵌套元組
result=cursor.fetchall()
print(result)
foriinresult:
print(i)
conn.commit()
cursor.close()
conn.close()
exceptExceptionase:
print(e.message)

讀取mysql數據,填寫數據到excel

frompyexcel_xlsimportsave_data
frompyexcel_xlsimportget_data

importmysql.connector

#和資料庫建立連接
cnx=mysql.connector.connect(user='root',password='',
host='127.0.0.1',
database='test')
#查詢語句
sql="selectmy_name,my_valuefromtbl_members"
#執行查詢
cursor.execute(sql)
#獲得查詢結果
result=cursor.fetchall()

cursor.close()
cnx.close()

#打開預定義表頭文件
xls_header=get_data("d:/xh.xls")

#獲得表頭數據
xh=xls_header.pop("Sheet1")

#拼接整表數據
xd=OrderedDict()
xd.update({"Sheet1":xh+result})

#保存到另一個文件中
save_data("d:/xd.xls",xd)

7. 如何用python3連接mysql資料庫

python3使用PyMysql連接mysql資料庫
python語言的3 x完全不向前兼容,導致我們在python2 x中可以正常使用的庫,到了python3就用不了了 比如說mysqldb目前MySQLdb並不支持python3
python語言的3.x完全不向前兼容,導致我們在python2.x中可以正常使用的庫,到了python3就用不了了.比如說mysqldb
目前MySQLdb並不支持python3.x , Python3.x連接MySQL的方案有:oursql, PyMySQL, myconnpy 等
下面來說下python3如何安裝和使用pymysql,另外兩個方案我會在以後再講。
1.pymysql安裝
pymysql就是作為python3環境下mysqldb的替代物,進入命令行,使用pip安裝pymysql

1

pip install pymysql3

2.pymysql使用
如果想使用mysqldb的方式,那麼直接在py文件的開頭加入如下兩行代碼即可。

1
2
3
4

#引入pymysql
import pymysql
#當成是mysqldb一樣使用,當然也可以不寫這句,那就按照pymysql的方式
pymysql.install_as_MySQLdb()

8. python怎麼調用資料庫

安裝MySQL驅動

由於MySQL伺服器以獨立的進程運行,並通過網路對外服務,所以,需要支持Python的MySQL驅動來連接到MySQL伺服器。
MySQL官方提供了mysql-connector-python驅動,但是安裝的時候需要給pip命令加上參數--allow-external:
pip install mysql-connector-python --allow-external mysql-connector-python

如果上面的命令安裝失敗,可以試試另一個驅動:
pip install mysql-connector

除了使用mysql.connector還可以使用pymysql

9. 如何用python連接 tableau 資料庫,然後讀取數據

鏈接:http://pan..com/s/1BWBtFMYeQazJWUYSmHi5fw

提取碼:yz10

Python&Tableau:商業數據分析與可視化。Tableau的程序很容易上手,各公司可以用它將大量數據拖放到數字「畫布」上,轉眼間就能創建好各種圖表。這一軟體的理念是,界面上的數據越容易操控,公司對自己在所在業務領域里的所作所為到底是正確還是錯誤,就能了解得越透徹。

快速分析:在數分鍾內完成數據連接和可視化。Tableau 比現有的其他解決方案快 10 到 100 倍。大數據,任何數據:無論是電子表格、資料庫還是 Hadoop 和雲服務,任何數據都可以輕松探索。

課程目錄:

前置課程-Python在咨詢、金融、四大等領域的應用以及效率提升

Python基礎知識

Python入門:基於Anaconda與基於Excel的Python安裝和界面

簡單的數學計算

Python數據分析-時間序列2-數據操作與繪圖

Python數據分析-時間序列3-時間序列分解

......

10. 在python中怎麼引入資料庫

資料庫版本:MySQL
Python版本:3.5
之前用想用MySQLdb來著,後來發現py3.5版本不支持,現選擇pymysql

現在想將資料庫adidas中的表jd_comment讀取至python中的DataFrame,方便數據分析處理
import pymysql
import pandas as pd
import numpy as np

try:
conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='adidas', charset='UTF8')
cur = conn.cursor()
cur.execute('select * from jd_comment')
rows = cur.fetchall() #獲取元組列表
cur.close()
conn.close()
except pymysql.Error as e:
print('Mysql Error %d: %s' %(e.args[0], e.args[1]))

cols = list(zip(*cur.description)) #可以看到列名(由元組構成)

#將資料庫中的數據保存為DataFrame(數據必須是字典或者數組,列表也必須是list或者數組)
adidas = pd.DataFrame(np.array(rows), columns=list(cols[0]))

熱點內容
keil編譯多個文件沒反應 發布:2025-03-11 21:43:07 瀏覽:314
水星硬碟錄像機初始密碼是多少 發布:2025-03-11 21:41:43 瀏覽:878
王者榮耀自動闖關腳本 發布:2025-03-11 21:40:23 瀏覽:181
adonetsql語句 發布:2025-03-11 21:40:14 瀏覽:851
2021別克君越配置怎麼選 發布:2025-03-11 21:31:05 瀏覽:809
長葛創傷醫院能做微血管解壓術么 發布:2025-03-11 21:27:56 瀏覽:268
怎麼升級androidsdk 發布:2025-03-11 21:26:14 瀏覽:541
php簡易環境 發布:2025-03-11 21:23:10 瀏覽:924
文華ema源碼 發布:2025-03-11 21:14:26 瀏覽:55
sqlserver代理伺服器 發布:2025-03-11 21:14:18 瀏覽:743