繁体   English   中英

sqlite3 表的变量值 Python 字符串格式化程序 arguments

[英]Variable values for sqlite3 table Python string formatter arguments

我正在尝试运行我找到的这个片段,但未定义groupfood的变量。

group_food = (group, food)
group_food_new = (group, food, 1)

with con:

    cur = con.cursor() 
    tmp = cur.execute("SELECT COUNT(Name) FROM (?) WHERE Name=?", group_food)
    
    if tmp == 0:
        cur.execute("INSERT INTO ? VALUES(?, ?)", group_food_new)
    else: 
        times_before = cur.execute("SELECT Times FROM ? WHERE Name=?", group_food)
        group_food_update = (group, (times_before +1), food)

        cur.execute("UPDATE ? SET Times=? WHERE Name=?", group_food_update)

哪些示例变量可以使此代码段起作用?

这是我正在尝试做的事情:

#!/usr/bin/python3
import os, sqlite3

print("Store certbot expiries in DB...")

File = os.path.realpath(__file__)
database_path = File.replace(".py", ".db")

connection = sqlite3.connect(database_path)
cursor = connection.cursor()

# Check if table exists
# https://pythonexamples.org/python-sqlite3-check-if-table-exists/#2
# c.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' AND name='students1' ''')
table_name = "certificates"
t = (table_name,)
cursor.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' AND name='{}' '''.format(table_name))

domain = "operation420.net"
# https://www.sqlitetutorial.net/sqlite-create-table/
if not cursor.fetchone()[0] == 1 :
    print('Table "{}" does not exist, creating...'.format(table_name))
    #t = (table_name,)
    sql_string = "CREATE TABLE '{}' (domain name, expiry)".format(table_name)
    print(sql_string)
    #cursor.execute(sql_string, t)
    cursor.execute(sql_string)
else:
    pass


#cmd = input("Command?> ")
cmd = 'n'       #################

table_name = "certificates"
new = ['n', "N", 'new', "NEW", "New", "nEW"]
new.extend([ 'create'  ])
if cmd.upper() in new:
    #### 04 Aug 20
    year = input("Year?> ")
    month_str = input("Month?> ")
    month_str = "{}".format(month_str).upper()
    if month_str == '1': month_str = '01'
    if month_str == '2': month_str = '02'
    if month_str == '3': month_str = '03'
    if month_str == '4': month_str = '04'
    if month_str == '5': month_str = '05'
    if month_str == '6': month_str = '06'
    if month_str == '7': month_str = '07'
    if month_str == '8': month_str = '08'
    if month_str == '9': month_str = '09'
    month = None
    Jan = [ "01", "JAN", ]
    Jan.extend([ "JANUARY" ])
    if month_str.upper() in Jan: month = "01"
    Feb = [ "02", "FEB", "FE" ]
    Feb.extend([ "F", "february".upper() ])
    if month_str.upper() in Feb: month = '02'
    Mar = [ '03', 'MAR' ]
    Mar.extend([ 'MARCH', "MR"])
    if month_str.upper() in Mar: month = '03'
    Apr = [ '04', 'APR' ]
    Apr.extend([ "APRIL", "A", 'AP'])
    if month_str.upper() in Apr: month = '04'
    May = [ '05', 'MAY' ]
    May.extend([ "MAY", "MY" ])
    if month_str.upper() in May: month = '05'
    Jun = [ '06', 'JUN' ]
    Jun.extend([ 'JUNE', "JN", "JE" ])
    if month_str.upper() in Jun: month = '06'
    Jul = [ '07', 'JUL' ]
    Jul.extend([ 'JULY', "JL" ])
    if month_str.upper() in Jul: month = '07'
    Aug = [ '08', 'AUG' ]
    Aug.extend([ "AUGUST", 'AG' ])
    if month_str.upper() in Aug: month = '08'
    Sep = [ '09', 'SEP', "SEPT", "S" ]
    Sep.extend([ 'SEPTEMBER', "SE", "SPT" ])
    if month_str.upper() in Sep: month = '09'
    Oct = [ '10', 'OCT', 'OC' ]
    Oct.extend([ 'OCTOBER', "O", "OT" ])
    if month_str.upper() in Oct: month = '10'
    Nov = [ '11', 'NOV', 'NV' ]
    Nov.extend([ 'NOVEMBER', 'NO', "N" ])
    if month_str.upper() in Nov: month = '11'
    Dec = [ '12', 'DEC' ]
    Dec.extend([ 'DECEMBER', "D", "DC" ])
    if month_str.upper() in Dec: month = '12'
    ##
    day = input("Day?> ")
    if day == '1': day = '01'
    if day == '2': day = '02'
    if day == '3': day = '03'
    if day == '4': day = '04'
    if day == '5': day = '05'
    if day == '6': day = '06'
    if day == '7': day = '07'
    if day == '8': day = '08'
    if day == '9': day = '09'
    ##
    expiry = "{}-{}-{}".format(year, month, day)
    print("Domain {} expires on {}".format(domain, expiry))
    command = 'INSERT INTO "{}" VALUES("{}","{}")'.format(table_name,domain,expiry)
    # Don't think command is the right term but Whatever...
    print(command)
    cursor.execute(command)




# End



也许来自sqlite 文档的信息将节省很多代码:

尝试在已包含同名表、索引或视图的数据库中创建新表通常是错误的。 但是,如果“IF NOT EXISTS”子句被指定为 CREATE TABLE 语句的一部分,并且同名的表或视图已经存在,则 CREATE TABLE 命令根本不起作用(并且不返回错误消息)。 如果由于存在索引而无法创建表,即使指定了“IF NOT EXISTS”子句,仍然会返回错误。

该片段使用执行文档中描述的“qmark”样式。 但不适用于使用 sqlite3 库,因为无法参数化表名/列名。

#!/usr/bin/python3
import os, sqlite3

print("Store certbot expiries in DB...")

File = os.path.realpath(__file__)
database_path = File.replace(".py", ".db")

connection = sqlite3.connect(database_path)
cursor = connection.cursor()

# Check if table exists
# https://pythonexamples.org/python-sqlite3-check-if-table-exists/#2
# c.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' AND name='students1' ''')
# https://stackoverflow.com/questions/25387537/inserting-a-table-name-into-a-query-gives-sqlite3-operationalerror-near-sy
table_name = "certificates"
t = (table_name,)
cursor.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' AND name='{}' '''.format(table_name))

# https://www.sqlitetutorial.net/sqlite-create-table/
if not cursor.fetchone()[0] == 1 :
    print('Table "{}" does not exist, creating...'.format(table_name))
    #t = (table_name,)
    sql_string = "CREATE TABLE '{}' (domain name, expiry)".format(table_name)
    print(sql_string)
    #cursor.execute(sql_string, t)
    cursor.execute(sql_string)
else:
    pass

#cmd = input("Command?> ")
cmd = 'ls'      #################


lst = ["LS", "SHOW" ]
if cmd.upper() in lst:
    pass

new = ['n', "N", 'new', "NEW", "New", "nEW"]
new.extend([ 'create'  ])
if cmd.upper() in new:
    #### 04 Aug 20
    domain = input("Domain?> ")
    year = input("Year?> ")
    month_str = input("Month?> ")
    month_str = "{}".format(month_str).upper()
    if month_str == '1': month_str = '01'
    if month_str == '2': month_str = '02'
    if month_str == '3': month_str = '03'
    if month_str == '4': month_str = '04'
    if month_str == '5': month_str = '05'
    if month_str == '6': month_str = '06'
    if month_str == '7': month_str = '07'
    if month_str == '8': month_str = '08'
    if month_str == '9': month_str = '09'
    month = None
    Jan = [ "01", "JAN", ]
    Jan.extend([ "JANUARY" ])
    if month_str.upper() in Jan: month = "01"
    Feb = [ "02", "FEB", "FE" ]
    Feb.extend([ "F", "february".upper() ])
    if month_str.upper() in Feb: month = '02'
    Mar = [ '03', 'MAR' ]
    Mar.extend([ 'MARCH', "MR"])
    if month_str.upper() in Mar: month = '03'
    Apr = [ '04', 'APR' ]
    Apr.extend([ "APRIL", "A", 'AP'])
    if month_str.upper() in Apr: month = '04'
    May = [ '05', 'MAY' ]
    May.extend([ "MAY", "M", "MA" ])
    if month_str.upper() in May: month = '05'
    Jun = [ '06', 'JUN' ]
    Jun.extend([ 'JUNE', "JN", "JE" ])
    if month_str.upper() in Jun: month = '06'
    Jul = [ '07', 'JUL' ]
    Jul.extend([ 'JULY', "JL" ])
    if month_str.upper() in Jul: month = '07'
    Aug = [ '08', 'AUG' ]
    Aug.extend([ "AUGUST", 'AG' ])
    if month_str.upper() in Aug: month = '08'
    Sep = [ '09', 'SEP', "SEPT", "S" ]
    Sep.extend([ 'SEPTEMBER', "SE", "SPT" ])
    if month_str.upper() in Sep: month = '09'
    Oct = [ '10', 'OCT', 'OC' ]
    Oct.extend([ 'OCTOBER', "O", "OT" ])
    if month_str.upper() in Oct: month = '10'
    Nov = [ '11', 'NOV', 'NV' ]
    Nov.extend([ 'NOVEMBER', 'NO', "N" ])
    if month_str.upper() in Nov: month = '11'
    Dec = [ '12', 'DEC' ]
    Dec.extend([ 'DECEMBER', "D", "DC" ])
    if month_str.upper() in Dec: month = '12'
    ##
    day = input("Day?> ")
    if day == '1': day = '01'
    if day == '2': day = '02'
    if day == '3': day = '03'
    if day == '4': day = '04'
    if day == '5': day = '05'
    if day == '6': day = '06'
    if day == '7': day = '07'
    if day == '8': day = '08'
    if day == '9': day = '09'
    ##
    expiry = "{}-{}-{}".format(year, month, day)
    print("Domain {} expires on {}".format(domain, expiry))
    command = 'INSERT INTO "{}" VALUES("{}","{}")'.format(table_name,domain,expiry)
    # Don't think command is the right term but Whatever...
    print(command)
    cursor.execute(command)
    connection.commit()




# End


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM