首页 > 解决方案 > 如何在 python 3.7 sqlite3 查询中插入 row_number 变量?

问题描述

我有一个如下所示的 python-3.7 函数。我的 sqlite3 表有 10 列。我想按行号从表中获取数据条目。但是 row_number 是一个变量而不是一个常数。如何在 python 3.7 sqlite3 查询中插入 row_number 变量?问题出在 rowid = 1 是常量之后的代码中。我不想要那个。我希望它是可变的。

def readSqliteTable(row_number):
    try:
        sqliteConnection = sqlite3.connect('SQLite_Python.db');
        cursor = sqliteConnection.cursor();
        print("Connected to SQLite");

        sqlite_select_query = """SELECT * FROM SqliteDb_Addresser WHERE rowid = 1""";
        # How do I insert row_number variable in the above sqlite3 query?
        cursor.execute(sqlite_select_query);
        records = cursor.fetchall();
        print("Total rows are:  ", len(records));
        print("Printing each row");
        for row in records:
            aTuple = (row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[8], row[9], row[10]);



        cursor.close();
        return aTuple;

    except sqlite3.Error as error:
        print("Failed to read data from sqlite table", error);

    finally:
        if (sqliteConnection):
            sqliteConnection.close();
            print("The SQLite connection is closed");
            return -1;

标签: python-3.xsqlite

解决方案


这就是你所说的参数化查询,解释在这里。长话短说,你想要这样的东西:

sqlite_select_query = """SELECT * FROM SqliteDb_Addresser WHERE rowid = ?""";
cursor.execute(sqlite_select_query, variable_row_id);

但是,使用诸如 SQL Alchemy 之类的 ORM 是一种更愉快的体验,请考虑尝试一下。


推荐阅读