【发布时间】:2010-07-14 14:34:39
【问题描述】:
问题:是否可以使用变量作为表名而不必使用字符串构造函数?
信息:
我现在正在开展一个项目,该项目对来自我的恒星模拟的数据进行分类。为此,我将所有数据加载到 sqlite 数据库中。它工作得很好,但我决定为我的数据库增加更多的灵活性、效率和可用性。我计划稍后将小行星添加到模拟中,并希望为每颗恒星提供一个表格。这样我就不必为每个太阳系中的 1-4k 查询 20m 一些小行星的表。
有人告诉我,使用字符串构造函数很糟糕,因为它让我容易受到 SQL 注入攻击。虽然这在这里没什么大不了的,因为我是唯一可以访问这些数据库的人,但我想遵循最佳实践。而且这样,如果我做一个类似情况的向公众开放的项目,我知道该怎么做。
目前我正在这样做:
cursor.execute("CREATE TABLE StarFrame"+self.name+" (etc etc)")
这可行,但我想做更多类似的事情:
cursor.execute("CREATE TABLE StarFrame(?) (etc etc)",self.name)
虽然我知道这可能是不可能的。虽然我会满足于类似的东西
cursor.execute("CREATE TABLE (?) (etc etc)",self.name)
如果这根本不可能,我会接受这个答案,但如果有人知道这样做的方法,请告诉。 :)
我正在用 python 编码。
【问题讨论】: