小编fat*_*ake的帖子

通过创建模块来简化数据库(psycopg2)的使用

首先,我要说我是Python的新手,如果这不是解决此问题的适当地点,我深表歉意。

我正在使用psycopg2模块来处理PostgreSQL数据库。一般用法如下所示:

# Example 1

import psycopg2

conn = psycopg2.connect(database="mydb", user="postgres")
cur = conn.cursor()

cur.execute ("SELECT * FROM mytable;")
rows = cur.fetchall()
for i, row in enumerate(rows):
    print "Row", i, "value = ", row

cur.close()
conn.close()
Run Code Online (Sandbox Code Playgroud)

这将打开与mydb数据库的连接,从表mytable中选择所有字段并打印它们,然后关闭连接。

我想做的就是将其中一些功能分解为一个模块,因为我需要在许多脚本中一遍又一遍地调用它们。对于此示例,理想情况下,我将有一个名为core的模块,其中包含三个功能:

  • core.db_init()-打开连接,由上面的前两行代码组成。
  • core.db_query(query)-执行所需的SQL查询,并由上述代码中的第三行组成。
  • core.db_close()-关闭连接并由最后两行组成。

我尝试过如下创建模块:

# Module core.py

import psycopg2

def db_init():
    conn = psycopg2.connect(database="mydb", user="postgres")
    cur = conn.cursor()

def db_query(query):
    cur.execute(query)

def db_close():
    cur.close()
    conn.close()
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用此模块重新创建示例1时,出现命名空间错误:

# Example 2

import core

core.db_init()
core.db_query("SELECT * …
Run Code Online (Sandbox Code Playgroud)

python sql postgresql module psycopg2

3
推荐指数
1
解决办法
3919
查看次数

标签 统计

module ×1

postgresql ×1

psycopg2 ×1

python ×1

sql ×1