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数据库

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数据库的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/250359.html<

(0)
运维的头像运维
上一篇2025-04-28 11:36
下一篇 2025-04-28 11:37

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注