可变表名。问:不需要使用字符串构造函数就可以使用变量作为表名吗?信息:我现在正在做一个项目,这个项目记录了我的模拟星图中的数据。为此,我将把所有数据加载到sqite数据库中。它运行得很好,但是我决定给我的数据库增加更多的灵活性、效率和可用性。我计划稍后在模拟中加入行星,并希望为每一颗恒星提供一张桌子。这样的话,我就不用去查询每一个太阳系中有2000万个行星的表了。有人告诉我,使用字符串构造函数是不好的,因为它使我容易受到SQL注入攻击。虽然这不是什么大问题,因为我是唯一能够访问这些DBS的人,我想遵循最佳实践。也是这样,如果我做一个类似的项目,它是向公众开放的,我知道该做什么。目前我正在做这件事: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编码。
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
query = 'SELECT * FROM {}'.format(table)c.execute(query)
import sqlite3def exists_table(db, name): query = "SELECT 1 FROM sqlite_master WHERE type='table' and name = ?" return db.execute(query, (name,)).fetchone() is not None
添加回答
举报
0/150
提交
取消