日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python與數(shù)據(jù)庫的無縫對接(python關(guān)聯(lián)數(shù)據(jù)庫)

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-86922220

windows下怎么用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