python - 如何检查表是否存在变量
问题描述
我有一个 sqlite 数据库,它使用以下内容可以成功检查表是否存在。
conn = sqlite3.connect('test.db)
c = conn.cursor()
c.execute('''SELECT count(name) FROM sqlite_master WHERE type='table' AND name = 'March' '''
但是,只要我在此代码中引入一个变量:
c.execute('''SELECT count(name) FROM sqlite_master WHERE type='table' AND name={} '''.format('March')
我收到以下错误:
c.execute('''SELECT count(name) FROM sqlite_master WHERE type='table' AND name={}'''.format('March'))
sqlite3.OperationalError: no such column: March
有没有更好的方法来做到这一点,或者我错过了什么?
解决方案
您仍然需要引用列名,因为您正在动态构建查询。
c.execute(
'''SELECT count(name)
FROM sqlite_master
WHERE type='table' AND name='{}'
'''.format('March')
)
但是,编写此类查询的更安全的方法是让c.execute
自己插入值,而不是使用字符串插值(这不能确保值被正确转义)。
c.execute(
'''SELECT count(name)
FROM sqlite_master
WHERE type='table' AND name=?
''',
("March",)
)
推荐阅读
- php - Stripe -“发送测试 Webhook”工作但未登录“Webhook Attempts”列表
- javascript - Firefox:ReferenceError:未定义事件
- advanced-rest-client - 请参阅 ARC 中的请求正文
- c# - 类继承自另一个项目中的抽象类。如何使用来自原始项目的 app.config 的值?
- security - MarkLogic 管理界面 - 停止使用不可用的安全林
- xml - Jenkins Pipeline 调用 Groovy 脚本
- kubernetes - 使用 TLS 的私有注册表
- java - 如何在此徽标测验中添加更多随机问题?
- r - 如何要求 R Shiny 创建几个“选择框” - 基于先前的输入
- python - 抓取亚马逊时结果不稳定