簡體   English   中英

如何創建用戶自定義的 SQLite function 可選 arguments

[英]How to create a user-defined SQLite function with optional arguments

我正在嘗試在 Python 中擴展 SQLite。所以我有幾個:

connection.create_function("MICROSECONDS_SUB", 2, microseconds_sub)

對應python實現:

def microseconds_sub(date, microseconds)
    # some kind of logic to subtract microseconds from a date

我希望能夠提供可以采用可選 arguments 的功能(例如,兩個必需的 arguments 和第三個可選的),但我不確定如何。

arguments號碼可以傳-1 ,防止SQLite對arguments號碼做任何校驗。

如果 function 接受傳遞給它的任何東西,那么調用就會成功,否則,它會拋出一個 sqlite3.OperationalError。

import sqlite3
def microseconds_sub(date, microseconds=-1):
    return f"Called with ({date}, {microseconds})"
db = sqlite3.connect(":memory:")
db.create_function("MICROSECONDS_SUB", -1, microseconds_sub)

print(db.execute("SELECT MICROSECONDS_SUB('1234-12-12');").fetchone()[0])
# Called with (1234-12-12, -1)
print(db.execute("SELECT MICROSECONDS_SUB('1234-12-12', 42);").fetchone()[0])
# Called with (1234-12-12, 42)

# This next line will raise sqlite3.OperationalError
print(db.execute("SELECT MICROSECONDS_SUB('1234-12-12', 42, 'Boom');").fetchone()[0])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM