『壹』 Python對資料庫的要求是什麼
Python中常用的資料庫有很多,需要根據不同的業務和應用場景來選擇合適的資料庫,才能使程序更高效.
一般常用的主要有 Mysql, Redis, MangoDB 等資料庫
『貳』 如何使用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 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。
『叄』 怎麼用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 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。
『肆』 python使用哪種資料庫
MySQL
是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關系型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體。
MySQL是一種關系資料庫管理系統,關系資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標准化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。
相關推薦:《Python基礎教程》
應用環境
與其他的大型資料庫例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有餘,而且由於 MySQL是開放源碼軟體,因此可以大大降低總體擁有成本。
MongoDB
是一個基於分布式文件存儲的資料庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB是一個介於關系資料庫和非關系資料庫之間的產品,是非關系資料庫當中功能最豐富,最像關系資料庫的。它支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關系資料庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
特點
它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:
*面向集合存儲,易存儲對象類型的數據。
mongodb集群參考
*模式自由。
*支持動態查詢。
*支持完全索引,包含內部對象。
*支持查詢。
*支持復制和故障恢復。
*使用高效的二進制數據存儲,包括大型對象(如視頻等)。
*自動處理碎片,以支持雲計算層次的擴展性。
*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
*文件存儲格式為BSON(一種JSON的擴展)。
*可通過網路訪問。
『伍』 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
『陸』 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)
『柒』 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 條數據測速:
『捌』 Python中主要使用哪些資料庫
Python中常用的資料庫有很多,需要根據不同的業務和應用場景來選擇合適的資料庫,才能使程序更高效.
一般常用的主要有 MySQL, Redis, MangoDB 等資料庫
學習這些資料庫,可以看黑馬程序員視頻庫的學習視頻,有代碼、有資料,有PPT,不了解還可以問老師!
『玖』 如何用python操作資料庫表
# -*- coding:utf8 -*-
import MySQLdb
conn = MySQLdb.connect( #此處連接資料庫信息
host = '127.0.0.1',
port = 3306,
user = 'root',
passwd = 'root',
db = 'python',
charset = 'utf8'
)
key1 = raw_input()
value2 = raw_input()
cursor = conn.cursor()
try:
#cursor.execute('SELECT * from test') # 查詢資料庫內容
#print cursor.rowcount
#輸出改變行數
cursor.execute("insert into test ('key1') values (value2)") # 增加資料庫內容
#cursor.execute("update test set name = 'lisi' where name = 'zhangsan'") # 更新資料庫內容
#cursor.execute("delete from test where name = 'lisi'") #刪除資料庫內容
conn.commit()
except Exception as e:
# 執行出錯回滾數據
print e
conn.rollback()
cursor.close
conn.close