Django DB 和 SQLite 使用不同的参数样式?


def getAppName(cursor, appId):
cursor.execute("SELECT name FROM App WHERE id=?", (appId,))
return cursor.fetchone()

我有一个函数getAppName,它将由原始sqlite光标和django db光标调用。

https://docs.djangoproject.com/en/3.0/topics/db/sql/#connections-and-cursors 声明 Django DB 游标需要 "%s" 样式占位符,而原始 sqlite 游标需要 ? 样式占位符。

我的函数如何在 django 和常规应用程序之间共享?

这就是为什么最好使用 ORM 而不是进行直接原始 SQL 调用的原因。 如果这样做,那么底层 ORM 将根据引擎自动进行适当的 SQL 更改。

因此,App.objects.get(id=appId).name和您的模型如下所示:

class App(models.Model):
name = models.CharField(max_length=256)

然后,根据您的DATABASE设置,相应的引擎会将其转换为所用数据库的正确 SQL。

最新更新