如何导入依赖于psycopg2 cursor对象的助手函数?

2024-10-02 22:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为基本的Postgres操作创建了一些助手函数,比如创建连接、创建游标、创建表、创建列等等。我将函数保存在一个单独的.py文件中,并添加到path中。我可以导入文件并在调用dir()时看到它们,但是当我尝试调用依赖于psycopg2.cursor()对象的函数时,它会返回一个名称错误。你知道吗

我试着把它变成一个类来访问对象,但没有成功。 我还尝试在我的_心理医生还有文件。你知道吗

#This is from the helper function file

import psycopg2

def connect_and_make_cursor(host, dbname, user, pw):
    try:
        conn = psycopg2.connect(f"host={host}, dbname={dbname} user = {user} password = {pw}")
        conn.set_session(autocommit = True)
        cur = conn.cursor()
    except psycopg2.Error as e:
        print(e)
    return cur


#this is from the file in which I am attempted to import the functions

import my_psycop
from password import password
#psycopg2 = my_psycop.psycopg2

dir(my_psycop)
['__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'close_connection',
 'connect_and_make_cursor',
 'create_database',
 'create_table',
 'insert_columns',
 'insert_rows',
  'psycopg2']

 cur = my_psycop.connect_and_make_cursor("127.0.0.1", 'postgres', 'postgres', password )

my_psycop.create_database('new_db')

以下是错误回溯:

NameError Traceback (most recent call last)
<ipython-input-11-5eb39fff83a2> in <module>()
----> 1 my_psycop.create_database('new_db')

c:\python36\lib\site-packages\my_psycop.py in create_database(db_name)
     12 def create_database(db_name):
     13     try:
---> 14         cur.execute(f"CREATE DATABASE {db_name}")
     15     except psycopg2.Error as e:
     16         print(e)

NameError: name 'cur' is not defined

我从来没有以这样一种依赖于单独库的方式使用自定义函数,我知道这是某种范围界定问题,但我就是搞不懂。如果以后我创建的每个文件中都不必包含这些函数,那就太好了。提前谢谢!你知道吗


Tags: 文件函数nameimportdbismyconnect