网站首页 > 技术文章 正文
在日常的工作中,尤其是在国产化替代过程中,会接触到各种不同的数据库,为了简化自己的操作步骤,减少出错。可以用脚本替代的工作,均通过脚本的方式来进行操作。但是数据库多了,每个产品对各种语言的支持度不同,有的有python模块,有的没有。特此对Python连接数据库的方式进行小结,便于后期使用。
- 通过相应的数据库模块的方式来连接数据库,需要安装对应的数据库模块。比如:pymysql、psycopg2…
简单的操作sample:
import pymysql ###导入pymysql模块
conn_mysql=pymysql.connect(
host="100.100.100.100",
user="test",
password="test",
database="test",
port = 3306
) ##定义MySQL的相关连接信息
cursor_mysql=conn_mysql.cursor(pymysql.cursors.DictCursor) ##建立数据库连接
cursor_mysql.execute(get_table_name) ##执行SQL语句
result_all=cursor_mysql.fetchall() ###语句执行的所有结果集
conn_mysql.close() ###使用完毕后,关闭连接
- 通过ODBC的方式连接数据库,需要安装的模块pyodbc,配置对应数据库的ODBC相关信息。
配置ODBC相关信息(通过odbcinst -j来确认ODBC所使用配置文件顺序)
more ~/.odbc.ini
[TEST]
HOST=100.100.100.100
PORT = 22222
UID = test
PWD = test
DRIVER = ##连接数据库所用的DRIVE
python文件内容简单内容如下(异常会直接退出脚本):
import pyodbc
#####建立连接
try:
cnxn = pyodbc.connect('DSN=%s;UID=%s;PWD=%s' %(get_dsn,get_uid,get_pwd))
cnxn.autocommit = False
cur = cnxn.cursor()
except Exception as e:
print
print ("ERROR:%s" %(e))
print
sys.exit()
####执行语句相关部分
def odbc_process(sql):
try:
cur.execute(sql)
return cur.fetchall() ###获取所有结果集
except Exception as e:
print()
print("ERROR:%s" %(e))
print()
sys.exit()
- 通过JDBC的方式连接数据库,需要安装的模块jaydebeapi,和对应数据库的jar包
import jaydebeapi
source_url = 'jdbc:oracle:thin:@//10.10.10.10:1521/Orcl'
source_driver = 'oracle.jdbc.driver.OracleDriver'
source_user = 'test'
source_password = 'test'
source_jarFile = 'ojdbc6-11.2.0.3.jar'
source_conn = jaydebeapi.connect(jclassname=source_driver, url=source_url, driver_args=[source_user, source_password], jars=source_jarFile)
source_curs = source_conn.cursor()
source_curs.execute('select 1 from dual')
source_result = source_curs.fetchall()
上面就是三种方式的简单介绍,希望对大家有所帮助,选择最适合自己的方式使用即可~
一个小小的问题:
大家如果使用jar包的方式,连接不同的数据库会用什么样的方式呢?会一切顺利么?
有没有碰到如下的报错呢?
“jpype._jclass.NoClassDefFoundError: java.lang.NoClassDefFoundError: oracle/jdbc/driver/OracleDriver”
如果碰到此问题,大家是如何解决呢? 欢迎留言讨论,谢谢~
猜你喜欢
- 2024-12-25 Python 标准库中鲜为人知的宝藏 | Node.js 22.8.0 发布
- 2024-12-25 Python入门学习记录之一:变量
- 2024-12-25 Python之Json模块详解
- 2024-12-25 告别重复工作,Python操作xlwings实例演示
- 2024-12-25 (新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
- 2024-12-25 (新版)Python 分布式爬虫与 JS 逆向进阶实战无mi-朝朝暮暮
- 2024-12-25 Python字符串总结
- 2024-12-25 python 爬虫调用 js 的库之 execjs
- 2024-12-25 代码示例:Python 调用并执行 JS
- 2024-12-25 Python、JavaScript和Rust的Web性能比较
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)