python-3.x - 从 postgresql 数据库中选择一个随机行返回“无”
问题描述
我正在使用 Python 3、psycopg2 并尝试从我的数据库中检索单个随机行,如果 scand_status = 'false' 但它返回'None'。我与数据库的连接很好。有人可以帮我处理sql吗?我有 3 列:network_number、scanned_status、number_of_scans。
这是我的sql语句
def random_network_number():
""" Retrieve a random network number from the database """
sql_statement = "SELECT * FROM ip_store WHERE (scanned_status = false)
OFFSET floor(random() * (SELECT COUNT(*) FROM ip_store)) LIMIT 1;"
network_number = execute_sql_statement(sql_statement)
output_information(network_number)
return network_number
输出
[ * ] None
Process finished with exit code 0
解决方案
一个更简单的 SQL 版本是:
SELECT * FROM ip_store WHERE (scanned_status = false) ORDER BY random() LIMIT 1;
我有一个类似的用例,它总是使用 ORDER BY random() 方法返回一条记录。
我相信您原始 SQL 的问题在于您正在使用所有记录的计数来计算您的偏移量,然后将其应用于过滤查询。我敢打赌,您的 OFFSET 大于过滤的行数。ORDER BY random() 消除了这个问题。
推荐阅读
- sql-server - 从 Linux 到 SQL Server 的 BCP
- javascript - 设置时如何修复本地存储中的重复元素?
- python - Pandas:带条件减法的累积和
- anypoint-studio - 如果 Mulesoft 4 的 POST 请求中存在 id 字段,如何抛出错误消息
- javascript - 使用 postgreSQL 和 Tape(npm 模块)的 INNER JOIN 查询测试失败
- node.js - BotBuilder-MicrosoftTeams - 在“node app.js”之后无法获得任何带有“hello”的响应
- node.js - 为 Angular+NodeJS Web 应用程序设置 AWS 应用程序负载均衡器时如何修复错误
- android - Admob 政策:是否允许从服务器响应中设置广告单元 ID/尺寸?
- java - 如何定义我的应用可以运行的 SDK 范围
- flutter - 颤振多选不起作用或需要类似的东西