新聞中心
Python作為一種高級編程語言,常常被應用于數(shù)據(jù)分析、Web應用開發(fā)等領(lǐng)域。而許多應用場景中,與數(shù)據(jù)庫的連接和數(shù)據(jù)的存取是必不可少的。,可以極大地提高開發(fā)效率,本文將介紹Python與數(shù)據(jù)庫連接的基礎(chǔ)知識、Python與MySQL、MongoDB、Redis的連接方法以及一些常見問題解決方法。

一、Python與數(shù)據(jù)庫連接的基礎(chǔ)知識
Python與數(shù)據(jù)庫連接的核心庫是Python標準庫中的sqlite3庫。該庫提供了面向關(guān)系型數(shù)據(jù)庫的API,通過該庫可以輕松地連接SQLite數(shù)據(jù)庫。在Python中,連接到其它數(shù)據(jù)庫需要使用第三方庫。
Python中連接數(shù)據(jù)庫主要需要用到以下幾個方法:
1. connect():連接到數(shù)據(jù)庫,返回一個連接對象。
2. cursor():創(chuàng)建一個游標對象,用于在數(shù)據(jù)庫中執(zhí)行SQL語句,并返回查詢結(jié)果。
3. execute():執(zhí)行SQL語句。
4. close():關(guān)閉游標對象和數(shù)據(jù)庫連接。
二、Python與MySQL的連接方法
Python中連接MySQL數(shù)據(jù)庫最常用的庫是pymysql庫,pymysql庫是一個純Python庫,可以在Python中輕松地實現(xiàn)與MySQL的交互。使用pymysql庫連接MySQL需要遵循以下步驟:
1. 安裝pymysql庫:可以使用pip install pymysql命令進行安裝。
2. 連接到MySQL數(shù)據(jù)庫:使用connect()方法連接到MySQL數(shù)據(jù)庫,需要指定用戶名、密碼、主機地址、端口號以及要連接的數(shù)據(jù)庫名稱等參數(shù)。例如:
“`
import pymysql
conn = pymysql.connect(
host=’localhost’,
user=’root’,
password=’password’,
db=’test’,
charset=’utf8mb4′
)
“`
3. 執(zhí)行SQL語句:使用execute()方法執(zhí)行SQL語句,例如:
“`
cur = conn.cursor()
cur.execute(“SELECT * FROM users”)
“`
4. 提交事務:如果是修改操作,執(zhí)行完SQL語句后需要使用commit()方法提交事務,例如:
“`
cur.execute(“UPDATE users SET age = 18 WHERE name = ‘John'”)
conn.commit()
“`
5. 獲取查詢結(jié)果:使用fetchone()或fetchall()方法獲取查詢結(jié)果,例如:
“`
data = cur.fetchone()
“`
三、Python與MongoDB的連接方法
MongoDB是一種文檔數(shù)據(jù)庫,Python中連接MongoDB最常用的庫是pymongo庫。使用pymongo庫連接MongoDB需要遵循以下步驟:
1. 安裝pymongo庫:可以使用pip install pymongo命令進行安裝。
2. 連接到MongoDB數(shù)據(jù)庫:使用MongoClient()方法連接到MongoDB數(shù)據(jù)庫,需要指定要連接的主機地址、端口號以及要連接的數(shù)據(jù)庫名稱等參數(shù)。例如:
“`
import pymongo
client = pymongo.MongoClient(“mongodb://localhost:27017/”)
db = client[“testdb”]
“`
3. 執(zhí)行操作:在MongoDB中,操作基本上可以分為查詢、插入、更新和刪除四種操作,使用collection對象進行操作。例如:
“`
collection = db[“users”]
collection.insert_one({“name”: “John Doe”, “age”: 25})
collection.find_one({“name”: “John Doe”})
collection.update_one({“name”: “John Doe”}, {“$set”: {“age”: 30}})
collection.delete_one({“name”: “John Doe”})
“`
四、Python與Redis的連接方法
Redis是一種內(nèi)存數(shù)據(jù)庫,Python中連接Redis最常用的庫是redis-py庫。使用redis-py庫連接Redis需要遵循以下步驟:
1. 安裝redis-py庫:可以使用pip install redis命令進行安裝。
2. 連接到Redis數(shù)據(jù)庫:使用StrictRedis()方法連接到Redis數(shù)據(jù)庫,需要指定要連接的主機地址、端口號以及要連接的數(shù)據(jù)庫名稱等參數(shù)。例如:
“`
import redis
r = redis.StrictRedis(host=’localhost’, port=6379, db=0)
“`
3. 執(zhí)行操作:在Redis中,操作基本上可以分為字符串、列表、、哈希表等,使用StrictRedis對象進行操作即可。例如:
“`
r.set(‘name’, ‘John’)
r.get(‘name’)
r.lpush(‘list’, 1, 2, 3)
r.rpop(‘list’)
“`
五、常見問題解決方法
1. 數(shù)據(jù)庫連接超時:可以在連接時指定超時時間,例如:
“`
conn = pymysql.connect(
host=’localhost’,
user=’root’,
password=’password’,
db=’test’,
charset=’utf8mb4′,
connect_timeout=5
)
“`
2. 數(shù)據(jù)庫中文亂碼:可以在連接時指定字符集為utf8mb4,例如:
“`
conn = pymysql.connect(
host=’localhost’,
user=’root’,
password=’password’,
db=’test’,
charset=’utf8mb4′
)
“`
3. 數(shù)據(jù)庫重連:可以使用try…except語句將數(shù)據(jù)庫連接語句包裹起來,當數(shù)據(jù)庫連接斷開時,重新連接數(shù)據(jù)庫。
“`
import time
while True:
try:
conn = pymysql.connect(
host=’localhost’,
user=’root’,
password=’password’,
db=’test’,
charset=’utf8mb4′
)
break
except Exception as e:
print(e)
time.sleep(5)
“`
結(jié)語
本文介紹了Python與數(shù)據(jù)庫連接的基礎(chǔ)知識、Python與MySQL、MongoDB、Redis的連接方法以及一些常見問題解決方法,希望能幫助讀者更好地使用Python進行數(shù)據(jù)庫操作。當然,不同的應用場景可能需要使用不同的數(shù)據(jù)庫,需要根據(jù)實際情況選擇合適的數(shù)據(jù)庫。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,響應式網(wǎng)站制作,設(shè)計師量身打造品牌風格,熱線:028-86922220windows下怎么用python連接hive數(shù)據(jù)庫
由于版本的不同,Python 連接 Hive 的前改蘆方式也就不一樣。
在網(wǎng)上搜索關(guān)鍵字 python hive 的時候可以找到一些解決方案。大部分是這樣的,首先把hive 根目錄下的$HIVE_HOME/lib/py拷貝到 python 的庫中,慧帶也就是 site-package 中,或者干脆把新寫的 python 代碼和拷貝的 py 庫放在同一個目錄下,然后用這殲衡個目錄下提供的 thrift 接口調(diào)用。示例也是非常簡單的。類似這樣:
import sys
from hive_service import ThriftHive
from hive_service.ttypes import HiveServerException
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
def hiveExe(sql):
try:
transport = TSocket.TSocket(‘127.0.0.1’, 10000)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute(sql)
print “The return value is : “
print client.fetchAll()
print “…………”
transport.close()
except Thrift.TException, tx:
print ‘%s’ % (tx.message)
if __name__ == ‘__main__’:
hiveExe(“show tables”)
或者是這樣的:
#!/usr/bin/env python
import sys
from hive import ThriftHive
from hive.ttypes import HiveServerException
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
try:
transport = TSocket.TSocket(‘14.18.154.188’, 10000)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute(“CREATE TABLE r(a STRING, b INT, c DOUBLE)”)
client.execute(“LOAD TABLE LOCAL INPATH ‘/path’ INTO TABLE r”)
client.execute(“SELECT * FROM test1”)
while (1):
row = client.fetchOne()
if (row == None):
break
print rowve
client.execute(“SELECT * FROM test1”)
print client.fetchAll()
transport.close()
except Thrift.TException, tx:
print ‘%s’ % (tx.message)
但是都解決不了問題,從 netstat 中查看可以發(fā)現(xiàn) TCP 連接確實是建立了,但是不執(zhí)行 hive 指令。也許就是版本的問題。
還是那句話,看各種中文博客不如看官方文檔。
項目中使用的 hive 版本是0.13,此時此刻官網(wǎng)的最新版本都到了1.2.1了。中間間隔了1.2.0、1.1.0、1.0.0、0.14.0。但是還是參考一下官網(wǎng)的方法試試吧。
首先看官網(wǎng)的 setting up hiveserver2
可以看到啟動 hiveserver2 可以配置更大最小線程數(shù),綁定的 IP,綁定的端口,還可以設(shè)置認證方式。(之前一直不成功正式因為這個連接方式)然后還給了 python 示例代碼。
import pyhs2
with pyhs2.connect(host=’localhost’,
port=10000,
authMechani=”PLAIN”,
user=’root’,
password=’test’,
database=’default’) as conn:
with conn.cursor() as cur:
#Show databases
print cur.getDatabases()
#Execute query
cur.execute(“select * from table”)
#Return column info from query
print cur.getSchema()
#Fetch table results
for i in cur.fetch():
print i
在拿到這個代碼的時候,自以為是的把認證信息給去掉了。然后運行發(fā)現(xiàn)跟之前博客里介紹的方法結(jié)果一樣,建立了 TCP 連接,但是就是不執(zhí)行,也不報錯。這是幾個意思?然后無意中嘗試了一下原封不動的使用上面的代碼。結(jié)果可以用。唉。。。
首先聲明一下,hive-site.xml中默認關(guān)于 hiveserver2的配置我一個都沒有修改,一直是默認配置啟動 hiveserver2。沒想到的是默認配置是有認證機制的。
然后再寫一點,在安裝 pyhs2的時候還是遇到了點問題,其實還是要看官方文檔的,我只是沒看官方文檔直接用 pip安裝導致了這個問題。安裝 pyhs2需要確定已經(jīng)安裝了幾個依賴包。直接看在 github 上的 wiki 吧。哪個沒安裝就補上哪一個就好了。
python 關(guān)聯(lián)數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于python 關(guān)聯(lián)數(shù)據(jù)庫,Python與數(shù)據(jù)庫的無縫對接,windows下怎么用python連接hive數(shù)據(jù)庫的信息別忘了在本站進行查找喔。
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌建站設(shè)計,成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務,全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價值。
文章題目:Python與數(shù)據(jù)庫的無縫對接(python關(guān)聯(lián)數(shù)據(jù)庫)
當前路徑:http://www.dlmjj.cn/article/ccepjge.html


咨詢
建站咨詢
