来自模块的函数声明它们未定义

时间:2016-11-10 19:42:16

标签: python function module

所以我有两个.py文件,我正在尝试将database_modules.py文件中的函数加载到main.py中,但是当我尝试运行该程序时,我收到此错误:

NameError: name 'create_table' is not defined

main.py文件位于主目录中,而database_modules.py位于子目录中(modules / database_modules.py)

main.py:

import sqlite3
import datetime
from modules import database_modules

connection = sqlite3.connect('accounts.db')
cursor = connection.cursor()

create_table()
data_entry(input('Please input your name:  '), hash(input('Please input your password:  ')))
read_entry()
quit()

database_modules.py:

def create_table():
    cursor.execute("CREATE TABLE IF NOT EXISTS accountDetails(name TEXT, password TEXT, dateCreation TEXT, accountID INT)")

def data_entry(name, password):
    dateCreation = (datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
    accountID = 1
    cursor.execute("INSERT INTO accountDetails (name, password, dateCreation, accountID) VALUES (?, ?, ?, ?)",
(name, password, dateCreation, accountID))
    connection.commit()

def read_entry():
    cursor.execute("SELECT * FROM accountDetails")
    data = cursor.fetchall()
    print(data)

def quit():
    cursor.close()
    connection.close()

提前感谢,因为我不确定如何获得这些功能,文件工作正常,直到我试图将我的代码转换为模块。

1 个答案:

答案 0 :(得分:0)

如评论所述,您需要从导入的脚本中指定要使用的功能:database_modules.create_table。或者,您可以使用from modules.database_modules import *直接导入database_modules文件中的所有函数。在此之后,您只能按照自己的名义使用它们。或者只需导入您需要的from modules.database_modules import create_table