[英]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.