python执行sql脚本
A. python连接Oracle数据库并执行sql查询,数据获取、关闭游标、查询列元数据等基础操作
Python连接Oracle数据库利用第三方库cx_Oracle进行操作。本篇内容将带你通过具体代码示例,逐步了解如何执行基本的连接数据库、执行SQL查询、获取数据、关闭游标以及查询列元数据等操作。让我们开始。
### 连接Oracle数据库
首先需要导入cx_Oracle库,建立数据库连接。
python
import cx_Oracle
dsn = cx_Oracle.makedsn('主机名', '端口号', '服务名')
conn = cx_Oracle.connect('用户名', '密码', dsn)
### 执行SQL查询
借助`conn.cursor()`生成游标对象,并使用此对象执行SQL查询。
python
cursor = conn.cursor()
cursor.execute('SELECT column_name FROM table_name WHERE condition;')
### 获取数据
通过循环`cursor`迭代查询结果。
python
data = []
for row in cursor:
data.append(row)
### 关闭游标和连接
完成操作后记得释放资源,确保正确关闭游标和连接。
python
cursor.close()
conn.close()
### 查询列元数据
利用`cursor.description`属性获取每列的详细信息,如数据类型、名称等。
python
column_info = [desc for desc in cursor.description]
以上步骤展示了如何使用Python与Oracle数据库进行基本操作,包括建立连接、执行查询、处理数据以及释放资源。请确保根据具体环境设置好数据库连接信息,如主机名、端口号、服务名、用户名及密码等。
B. python如何操作SQL语句
这里有个比较清楚的解答:
http://..com/question/262503775.html
但是你的是一个文本的话,就要稍微改一下咯
如果改成cx_Oracle的话,就是这样的:
import sys
import cx_Oracle
import os
class handleDataBase:
def __init__(self,user,passwd,server,sql):
self.user=user
self.passwd=passwd
self.server=server
self.sql=sql
self.conn = cx_Oracle.connect("%s/%s@%s"%(self.user,self.passwd,self.server))
def selectDB(self):
cursor = self.conn.cursor()
cursor.execute("select count(1) from search_item_08")
ret = cursor.fetchall()
cursor.close()
print ret
return ret
def closeDB(self):
self.conn.close()
if __name__ == "__main__":
if len(sys.argv) < 4:
print "Need Arguments: user passwd server"
sys.exit(1)
user=sys.argv[1]
passwd=sys.argv[2]
server=sys.argv[3]
#sql='select count(1) from search_item_08;' #注意这里要改
sql = open('a.sql','r').read() #改成从文件读取
#接下来就访问数据库了
handleDB = handleDataBase(user,passwd,server,sql)
handleDB.selectDB()
handleDB.closeDB()
C. 如何在数据库中数据达到特定条件执行外部脚本比如python
1.不修改数据库与系统结构,使用Python做个定时策略,每隔一段时间来执行【特定条件是否达到】的统计SQL脚本。这种模式适用于数据量不多,或者每次执行的统计脚本时间短,或者实时性要求低的情况。
2.修改数据库,不改系统结构。那就是使用数据库的触发器,或者存储过程,来充当抽象接口。通过抽象接口,来进行实时统计,但这样做,压力就集中在数据库这边,而且随着数据量的增长,这种依赖于数据库本身功能的结构,不容易优化。
3.同时修改数据库与系统结构,用编程语言比如Python来写中间件,进行实时统计,并把统计结果保存到数据库。这就让压力转移到中间件上,而且随着数据量的增大,很容易把中间件做成多节点的集群模式来分担压力。
