質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

735閲覧

postgresのDBのcursor処理

yamadataro3

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/01/24 12:50

編集2020/01/25 13:23

pythonでのpostgresのDB処理で、最初にcursorを作成して、
必要な時に別クラス(別ファイル)からcursorを使用したいと考えています。
現状は以下のようにDbaccessクラスのglobal変数に設定しています。
grobal変数はあまり使用したくないのですが、
使用しないでできる方法教えていただけませんでしょうか

main.py
class test_g():
test = Dbaccess():
test.db_init()

test2 = Select1()
test2.db_select()

test3 = Select2()
test3.db_select()


Dbaccess.py

import psycopg2
class Dbaccess():
cur = ""

def db_init():
global cur
conn = psycopg2.connect("dbname=test user=postgres")
cur = conn.cursor()

def get_cur():
global cur
return cur


select1.py

import psycopg2
import Dbaccess

class Select1():
def db_select():
cur_sel = Dbaccess.get_cur()
sql = "select * from table_a"
cur_sel.execute(sql)


Select2.py

import psycopg2
import Dbaccess

class Select2():
def db_select():
cur_sel = Dbaccess.get_cur()
sql = "select * from table_b"
cur_sel.execute(sql)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

関数がなにか値を返せることは理解していますね。return文を使っていますから。
関数は引数を受け取れることも理解していますよね。
ある関数が返してくれたcursorを、他の関数の引数に渡してみてはいかがでしょうか。

python

1def get_cur(): 2 ... 3 return cur 4 5def db_select(cur): 6 sql = "select * from table_b" 7 cur_sel.execute(sql) 8 ... 9 10xx = get_cur() 11db_select(xx)

投稿2020/01/24 15:06

shiketa

総合スコア3971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamadataro3

2020/02/13 08:51

遅くなりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問