首页 > 解决方案 > 根据输入命名数据库

问题描述

我确定这要么是不可能的,要么真的很容易,但我无法弄清楚。我正在尝试根据输入命名数据库。快速总结一下:

import sqlite3
import time
import datetime

global date
d = datetime.datetime.today()
month = str(d.month)
day = str(d.day)
year = str(d.year)
date = month+day+year

print(type(date))
def name_creation():
    while True:
        global name
        name = input("What is the name? ")
        answer = input("Is the name correct?(y/n)")
        if answer not in ('y', 'n'):
            print ("Invalid input")
            name_creation()
            break
        if answer == 'y':
            break
        if answer == 'n':
            print ("Okay, re-enter name.")
    global name_date
    name_date = name + " " + date
name_creation()
conn = sqlite3.connect (eval(name_date).db)

其中大部分并不重要,但我已经尝试解决这个问题大约 2 周。我确定我会以错误的方式解决这一切,但我找不到问题,所以我可以解决它。

标签: pythonsqlite

解决方案


您需要从函数中定义 name_date 以将其用作全局。

import sqlite3
import time
import datetime
name_date=''
.
.
.
.
def name_creation():
.
. 
  global name_date
  name_date="type_your_text_here"
conn = sqlite3.connect (eval(name_date).db)

或者你可以让它返回那个 name_date,然后用它来创建一个 conn。

并尝试像这样命名一个数据库:

conn=sqlite3.connect(name_date + ".db")

推荐阅读