Python与数据库的无缝对接 (python 关联数据库)

Python作为一种高级编程语言,常常被应用于数据分析、Web应用开发等领域。而许多应用场景中,与数据库的连接和数据的存取是必不可少的。,可以极大地提高开发效率,本文将介绍Python与数据库连接的基础知识、Python与MySQL、MongoDB、Redis的连接方法以及一些常见问题解决方法。

一、Python与数据库连接的基础知识

Python与数据库连接的核心库是Python标准库中的sqlite3库。该库提供了面向关系型数据库的API,通过该库可以轻松地连接SQLite数据库。在Python中,连接到其它数据库需要使用第三方库。

Python中连接数据库主要需要用到以下几个方法:

1. connect():连接到数据库,返回一个连接对象。

2. cursor():创建一个游标对象,用于在数据库中执行SQL语句,并返回查询结果。

3. execute():执行SQL语句。

4. close():关闭游标对象和数据库连接。

二、Python与MySQL的连接方法

Python中连接MySQL数据库最常用的库是pymysql库,pymysql库是一个纯Python库,可以在Python中轻松地实现与MySQL的交互。使用pymysql库连接MySQL需要遵循以下步骤:

1. 安装pymysql库:可以使用pip install pymysql命令进行安装。

2. 连接到MySQL数据库:使用connect()方法连接到MySQL数据库,需要指定用户名、密码、主机地址、端口号以及要连接的数据库名称等参数。例如:

“`

import pymysql

conn = pymysql.connect(

host=’localhost’,

user=’root’,

password=’password’,

db=’test’,

charset=’utf8mb4′

)

“`

3. 执行SQL语句:使用execute()方法执行SQL语句,例如:

“`

cur = conn.cursor()

cur.execute(“SELECT * FROM users”)

“`

4. 提交事务:如果是修改操作,执行完SQL语句后需要使用commit()方法提交事务,例如:

“`

cur.execute(“UPDATE users SET age = 18 WHERE name = ‘John'”)

conn.commit()

“`

5. 获取查询结果:使用fetchone()或fetchall()方法获取查询结果,例如:

“`

data = cur.fetchone()

“`

三、Python与MongoDB的连接方法

MongoDB是一种文档数据库,Python中连接MongoDB最常用的库是pymongo库。使用pymongo库连接MongoDB需要遵循以下步骤:

1. 安装pymongo库:可以使用pip install pymongo命令进行安装。

2. 连接到MongoDB数据库:使用MongoClient()方法连接到MongoDB数据库,需要指定要连接的主机地址、端口号以及要连接的数据库名称等参数。例如:

“`

import pymongo

client = pymongo.MongoClient(“mongodb://localhost:27017/”)

db = client[“testdb”]

“`

3. 执行操作:在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是一种内存数据库,Python中连接Redis最常用的库是redis-py库。使用redis-py库连接Redis需要遵循以下步骤:

1. 安装redis-py库:可以使用pip install redis命令进行安装。

2. 连接到Redis数据库:使用StrictRedis()方法连接到Redis数据库,需要指定要连接的主机地址、端口号以及要连接的数据库名称等参数。例如:

“`

import redis

r = redis.StrictRedis(host=’localhost’, port=6379, db=0)

“`

3. 执行操作:在Redis中,操作基本上可以分为字符串、列表、、哈希表等,使用StrictRedis对象进行操作即可。例如:

“`

r.set(‘name’, ‘John’)

r.get(‘name’)

r.lpush(‘list’, 1, 2, 3)

r.rpop(‘list’)

“`

五、常见问题解决方法

1. 数据库连接超时:可以在连接时指定超时时间,例如:

“`

conn = pymysql.connect(

host=’localhost’,

user=’root’,

password=’password’,

db=’test’,

charset=’utf8mb4′,

connect_timeout=5

)

“`

2. 数据库中文乱码:可以在连接时指定字符集为utf8mb4,例如:

“`

conn = pymysql.connect(

host=’localhost’,

user=’root’,

password=’password’,

db=’test’,

charset=’utf8mb4′

)

“`

3. 数据库重连:可以使用try…except语句将数据库连接语句包裹起来,当数据库连接断开时,重新连接数据库。

“`

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)

“`

结语

本文介绍了Python与数据库连接的基础知识、Python与MySQL、MongoDB、Redis的连接方法以及一些常见问题解决方法,希望能帮助读者更好地使用Python进行数据库操作。当然,不同的应用场景可能需要使用不同的数据库,需要根据实际情况选择合适的数据库。

相关问题拓展阅读:

windows下怎么用python连接hive数据库

由于版本的不同,Python 连接 Hive 的前改芦方式也就不一样。

在网上搜索关键字 python hive 的时候可以找到一些解决方案。大部分是这样的,首先把hive 根目录下的$HIVE_HOME/lib/py拷贝到 python 的库中,慧带也就是 site-package 中,或者干脆把新写的 python 代码和拷贝的 py 库放在同一个目录下,然后用这歼衡个目录下提供的 thrift 接口调用。示例也是非常简单的。类似这样:

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 中查看可以发现 TCP 连接确实是建立了,但是不执行 hive 指令。也许就是版本的问题。

还是那句话,看各种中文博客不如看官方文档。

项目中使用的 hive 版本是0.13,此时此刻官网的最新版本都到了1.2.1了。中间间隔了1.2.0、1.1.0、1.0.0、0.14.0。但是还是参考一下官网的方法试试吧。

首先看官网的 setting up hiveserver2

可以看到启动 hiveserver2 可以配置更大最小线程数,绑定的 IP,绑定的端口,还可以设置认证方式。(之前一直不成功正式因为这个连接方式)然后还给了 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

在拿到这个代码的时候,自以为是的把认证信息给去掉了。然后运行发现跟之前博客里介绍的方法结果一样,建立了 TCP 连接,但是就是不执行,也不报错。这是几个意思?然后无意中尝试了一下原封不动的使用上面的代码。结果可以用。唉。。。

首先声明一下,hive-site.xml中默认关于 hiveserver2的配置我一个都没有修改,一直是默认配置启动 hiveserver2。没想到的是默认配置是有认证机制的。

然后再写一点,在安装 pyhs2的时候还是遇到了点问题,其实还是要看官方文档的,我只是没看官方文档直接用 pip安装导致了这个问题。安装 pyhs2需要确定已经安装了几个依赖包。直接看在 github 上的 wiki 吧。哪个没安装就补上哪一个就好了。

python 关联数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python 关联数据库,Python与数据库的无缝对接,windows下怎么用python连接hive数据库的信息别忘了在本站进行查找喔。


数据运维技术 » Python与数据库的无缝对接 (python 关联数据库)