如何将SQLite3数据库名称设置为Python变量并支持用户输入?
解决SQLite3数据库名设为用户输入变量的问题
核心逻辑
SQLite的数据库名对应磁盘上的实际文件,所以要在数据库连接阶段传入用户输入的变量,而非在表创建语句中设置。
具体实现(以Python为例)
- 获取用户输入的数据库名称
- 将变量传入
sqlite3.connect()方法完成连接 - 正常执行表创建语句即可
示例代码:
import sqlite3 # 获取用户输入的数据库名,建议添加.db后缀规范命名 db_name = input("请输入数据库名称:") + ".db" # 用变量作为数据库名建立连接 conn = sqlite3.connect(db_name) cursor = conn.cursor() # 创建表的语句无需额外拼接数据库名变量 cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''') # 提交操作并关闭连接 conn.commit() conn.close()
误区纠正
你之前尝试在表创建语句末尾加数据库名变量的思路不对:SQL表创建语句里的数据库名是可选的指定项(格式为CREATE TABLE [数据库名.]表名),但默认会使用当前连接的数据库,而且直接拼接变量不仅语法逻辑错误,还可能引发SQL注入风险。正确的做法是在连接时就指定目标数据库。
内容的提问来源于stack exchange,提问作者Landon Urcho
相关产品推荐
相关产品推荐

