1. 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
2. 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 條數據測速:
3. python中mongodb怎麼連接其他伺服器的資料庫
對於mongo的操作,先安裝mongodb的python擴展,在你的命令行窗口上輸入:pip install pymongo,下面是例子,按需要修改
from pymongo import MongoClientimport timemongo_uri_auth = 'mongodb://user:password@localhost:27017/'#mongo有要驗證的話請自行替換user和passwordmongo_uri_no_auth = 'mongodb://localhost:27017/' #mongo沒有賬號密碼驗證的時候用這個database_name = 'request_db' # 你要連接的資料庫名,自行替換你需要的庫名table_name = 'request_tb' #你要查詢的表名,請自行替換你需要的表名client = MongoClient(mongo_uri_no_auth)#創建了與mongodb的連接db = client[database_name]table = db[table_name] #獲取資料庫中表的游標#你要插入的數據insert_data = {"name": "Mike", "grade": "two", "age": 12, "sex": "man"}table..insert_one(insert_data ) #插入一條數據#查詢數據name為Mike的記錄record = table.find_one({"name": "Mike"})print record
4. python可以訪問遠程伺服器上的mysql資料庫么
第一:更改
「mysql」
資料庫里的
「user」
表裡的
「host」
項,從」localhost」改稱'%'。
或者新加條記錄,「host」
項為要訪問的ip地址,並授權。重啟mysql服務。
第二:在系統防火牆添加例外埠:3306,並允許例外。
錯誤提示:
ERROR
1130:
Host
'19...
5. python能遠程連接MySQL資料庫嗎
使用Python連接資料庫首先需要安裝Python的資料庫驅動。
我的本地只裝了Python,並沒有裝MySQL,當我使用命令:
sudo pip install mysql-python
安裝驅動(也就是MySQLdb模塊)的時候出現如下錯誤:
EnvironmentError: mysql_config not found
查資料 知道是因為沒有安裝下面兩開發包:
libmysqld-dev
libmysqlclient-dev
安裝:
sudo apt install libmysqld-dev
事實上用apt安裝第一個之後,第二個也已經存在了。再次嘗試安裝mysql-python就成功了。
現在嘗試遠程連接數據:
import MySQLdb
conn = MySQLdb.connect(host = '×××××××××××××', # 遠程主機的ip地址,
user = 'root', # MySQL用戶名
db = 'alimusic', # database名
passwd = '××××××', # 資料庫密碼
port = 3306, #資料庫監聽埠,默認3306
charset = "utf8") #指定utf8編碼的連接
cursor = conn.cursor() # 創建一個游標,然後通過游標執行sql語句
cursor.excute("select * from table1 limit 10")
values = cursor.fetchall() # 取出cursor得到的數據
cursor.close(); conn.close() #最後記得關閉游標和連接,防止數據泄露
如果excute()執行的是插入數據的代碼,那麼在執行完成之後需要調用
cursor.commit()
才能把結果寫入資料庫
中文亂碼
編碼錯誤在任何時候都必須重視的問題,由於連接資料庫涉及到多個層次,比如資料庫伺服器編碼,創建的database編碼,table的編碼,連接(也就是上面的conn)編碼。如果出現亂碼,需要檢查上述的每一個環節。這里記錄幾個查詢各種編碼的方式:
查詢資料庫的各種編碼:
show variables like "%char%";
查詢某個資料庫的默認編碼
show create database databasename;
查詢某張表的默認編碼
show create table tablename;
最好在create資料庫或者表的時候在創建語句後面指定具體的編碼方式:default character set utf8
6. 在mac上用python連接遠程mysql資料庫需要在本機安裝mysql嗎
既然連接的是遠程的mysql,本地是沒有必要安裝mysql服務的