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

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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