在定义的插入查询中添加增量查询

时间:2018-03-18 23:49:13

标签: python postgresql logging bots telegram

我有以下不完整的功能:

def logs(user_logs):

try:
    conn = psycopg2.connect(DB_CONNECTION_STRING)
    cursor = conn.cursor()

    cursor.execute("INSERT INTO \"Logs\" (user_id, telegram_nickname, command) VALUES (%s, %s, %s);", user_logs,)
    conn.commit()
    return None

except Exception as e:
    return e

我想在"命令"之后添加一个增量列,调用" usage"。目标是跟踪来自电报机器人的命令的使用情况。 示例:command> / start usage> 1如果另一个用户输入/ start,则使用次数应增加1,依此类推。

1 个答案:

答案 0 :(得分:0)

您的日志记录功能按用户ID分组命令,但您似乎想要所有用户的总体计数?如果是这种情况,添加"用法"则没有意义。列到日志表。

您可以使用单独的表来保持每个命令的使用次数,但它根本不会做任何事情。保留当前日志表,然后使用SQL获取计数:

select count(*) from logs where command = '/start'

然后你可以找到任何命令的当前计数。

这也更灵活;如果您想要单个用户的计数,那么您可以扩充WHERE子句以按用户ID进行过滤。使用GROUP BY也可以进行分组。

原始回答

您是否只是将命令字符串的第一部分传递给日志功能?

if text.startswith('/'):
    command = text.split()[0]
    logs(user_id, telegram_nickname, command)
    if command == '/start':
    etc...etc..

此处str.split()用于获取命令的第一部分以进行记录。