Python/SQL:使用从制表符分隔文件中提取的变量创建 table 名称
Python/SQL: create table name with variables extracted from a tab delimited file
有没有一种方法可以使用从制表符分隔文件的 header 中提取的变量来创建 table 名称(SQL 数据库的名称)?
我试过这个:
import sqlite3
conn = sqlite3.connect('cur_test.sq3')
cur = conn.cursor()
#Create a 'test.txt' file for that example
test = open('test.txt', 'w')
test.write('a\t1\t2\n')
test.close()
#REMEMBER: header of test.txt = a 1 2 (tab delimited)
with open('test.txt') as f:
header = f.readline().rstrip("\n") #Extract the header
a, b, c = header.split("\t") #Split it into variable
b, c = int(b), int(c) #Convert some string into integer
req = "CREATE TABLE test (%s TEXT, %s INTEGER, %s INTEGER)" #I need help here
cur.execute(req, (a, b, c))
conn.commit()
显然 cur.execute
失败是因为调用变量的语法错误:
sqlite3.OperationalError: near "%": syntax error
谁能帮帮我?
在您评论行的字符串后添加:
% (a, b, c)
更好的是,阅读有关字符串格式化的新样式:https://mkaz.com/2012/10/10/python-string-format/
然后,一般来说,严格避免使用不受信任的字符串输入来构建 SQL 语句。
有没有一种方法可以使用从制表符分隔文件的 header 中提取的变量来创建 table 名称(SQL 数据库的名称)? 我试过这个:
import sqlite3
conn = sqlite3.connect('cur_test.sq3')
cur = conn.cursor()
#Create a 'test.txt' file for that example
test = open('test.txt', 'w')
test.write('a\t1\t2\n')
test.close()
#REMEMBER: header of test.txt = a 1 2 (tab delimited)
with open('test.txt') as f:
header = f.readline().rstrip("\n") #Extract the header
a, b, c = header.split("\t") #Split it into variable
b, c = int(b), int(c) #Convert some string into integer
req = "CREATE TABLE test (%s TEXT, %s INTEGER, %s INTEGER)" #I need help here
cur.execute(req, (a, b, c))
conn.commit()
显然 cur.execute
失败是因为调用变量的语法错误:
sqlite3.OperationalError: near "%": syntax error
谁能帮帮我?
在您评论行的字符串后添加:
% (a, b, c)
更好的是,阅读有关字符串格式化的新样式:https://mkaz.com/2012/10/10/python-string-format/
然后,一般来说,严格避免使用不受信任的字符串输入来构建 SQL 语句。