web-dev-qa-db-ja.com

pyodbcは任意の形式の名前付きパラメーターをサポートしていますか?

私はsqlite3が持っていることを知っています

data = {'test_col': 012345679}
sqlite3_conn.execute("""
    UPDATE test_db SET test_col = :test_col
    ;""", data)

mysql-connector-pythonには

data = {'test_col': 012345679}
mysql_conn.execute("""
    UPDATE test_db SET test_col = %(test_col)s
    ;""", data)

しかし、pyodbcは任意の形式の名前付きパラメーターをサポートしていますか? dictをexecuteメソッドに渡すことができるのが好きです。これは非常に便利で、INSERT INTO ... ON DUPLICATE KEY UPDATEなどのいくつかのクエリでは、これが必要です。

11
randomdev2

名前付きパラメーターはサポートされていませんが、正しい順序で渡されるバインドされたパラメーターはかなり簡単です。

x = "This"
y = 345

mssql_cur.execute("SELECT * FROM mytable WHERE colx = ? AND coly = ?", x, y)

または

mssql_cur.execute("SELECT * FROM mytable WHERE colx = ? AND coly = ?", (x, y))

executemanyパラメータの受け渡しなど、詳細とオプションは次のとおりです。

https://github.com/mkleehammer/pyodbc/wiki/Cursor

幸運を!

9
FlipperPA