python - 获取多表计数的 Python 脚本
问题描述
我正在尝试编写一个 python 脚本来获取一些用于监视的表的计数,这些表看起来有点像下面的代码。我正在尝试获得如下所示的输出,并尝试使用 python 多维数组但没有任何运气。
预期输出:
('oltptransactions:', [(12L,)])
('oltpcases:', [(24L,)])
脚本:
import psycopg2
# Connection with the DataBase
conn = psycopg2.connect(user = "appuser", database = "onedb", host = "192.168.1.1", port = "5432")
cursor = conn.cursor()
sql = """SELECT COUNT(id) FROM appuser.oltptransactions"""
sql2 = """SELECT count(id) FROM appuser.oltpcases"""
sqls = [sql,sql2]
for i in sqls:
cursor.execute(i)
result = cursor.fetchall()
print('Counts:',result)
conn.close()
电流输出:
[root@pgenc python_scripts]# python multi_getrcount.py
('Counts:', [(12L,)])
('Counts:', [(24L,)])
任何帮助表示赞赏。
谢谢!
解决方案
我有点不愿意展示这种方式,因为最佳实践建议不要构建动态 SQL 字符串,而是始终使用常量字符串和参数,但这是计算字符串合法的一个用例:
- 表名不能作为 SQL 中的参数
- 输入仅来自程序本身并完全掌握
可能的代码:
sql = """SELECT count(*) from appuser.{}"""
tables = ['oltptransactions', 'oltpcases']
for t in tables:
cursor.execute(sql.format(t))
result = cursor.fetchall()
print("('", t, "':,", result, ")")
推荐阅读
- git - 如何将 Git/ssh 协议路由到“容器化”git 服务器
- sql-server - 如何将 XML 文件中的 Excel 序列号转换为 SSIS 包中 SQL Server 的 mm/dd/yyyy?
- python - 在如何为用户解决我的问题时遇到问题
- c++ - 避免两个 ROS 订阅者回调函数之间的数据竞争条件
- c# - C# 正则表达式优化
- node.js - 如何在 nodejs 中仅加密整个文件的一部分(例如:仅前 2500 个字节)?
- wordpress - 使用 wp_nav_menu_objects 将某些内容附加到 wordpress 导航菜单
- ffmpeg - 使用 FFMpeg 时如何在双引号内分隔引号、双引号和冒号
- visual-studio - 添加 fontawesome svgs 后,Visual Studio 构建速度变慢
- python - 将具有任意行数的输入文件写入制表符分隔的输出