如何导入依赖于psycopg2游标对象的辅助函数?

时间:2019-04-01 01:25:54

标签: python postgresql psycopg2

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

我试图使其成为一个类,以这种方式访问​​对象没有成功。 我也尝试在my_psycop.py文件中调用cur函数。

#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

我从未使用过依赖于单独的库的方式使用自定义函数,并且理解这是某种范围问题,但我只是想不通。不必在以后创建的每个文件中都包含这些功能,将是很棒的选择。预先感谢!

0 个答案:

没有答案