将变量定义为数据库游标 python
Define variable as database cursor python
我使用 psycopg2 编写了一个模块来管理我的程序的数据库。
import psycopg2
db_cursor = None
def connect() -> bool:
global db_cursor
try:
db = psycopg2.connect(os.environ.get('DATABASE_URL'))
db.autocommit = True
db_cursor = db.cursor()
logging.info('Connected to database')
return True
except psycopg2.Error:
logging.exception('Error while connecting to database')
return False
def insert() -> bool:
global db_cursor
try:
db_cursor.execute(
'INSERT INTO TABLE ...'
)
return True
except psycopg2.Error:
logging.exception('Error while adding new entry to database')
return False
# Other database functions which use 'global db_cursor'...
对于每个 db_cursor.execute()
,PyCharm 生成一个警告:
Cannot find reference 'execute' in 'None'
我知道这是因为我最初将 db_cursor
设置为 None
而 PyCharm 不知道它将成为数据库游标对象。
代码运行没有任何问题,但那些警告有点烦人!我应该如何编写代码以便 PyCharm 知道它将成为数据库游标并停止这些警告?
我尝试使用 variable: type
(PEP 526) 语法,但我不知道如何将类型设置为 cursor
。
更新: 我尝试了 a = type(db_cursor)
并且调试器将 a
显示为“psycopg2.extensions.cursor”;但是当我写 db_cursor: psycopg2.extensions.cursor
PyCharm 时显示另一个警告:
Cannot find reference 'extensions' in 'init.py | init.py'
我找到了答案。我导入了 psycopg2.extensions
并将光标定义为 dc_cursor: psycopg2.extensions.cursor
并抑制了所有警告。
import psycopg2
from psycopg2 import extensions
dc_cursor: psycopg2.extensions.cursor
def connect() -> bool:
global db_cursor
# ...
我使用 psycopg2 编写了一个模块来管理我的程序的数据库。
import psycopg2
db_cursor = None
def connect() -> bool:
global db_cursor
try:
db = psycopg2.connect(os.environ.get('DATABASE_URL'))
db.autocommit = True
db_cursor = db.cursor()
logging.info('Connected to database')
return True
except psycopg2.Error:
logging.exception('Error while connecting to database')
return False
def insert() -> bool:
global db_cursor
try:
db_cursor.execute(
'INSERT INTO TABLE ...'
)
return True
except psycopg2.Error:
logging.exception('Error while adding new entry to database')
return False
# Other database functions which use 'global db_cursor'...
对于每个 db_cursor.execute()
,PyCharm 生成一个警告:
Cannot find reference 'execute' in 'None'
我知道这是因为我最初将 db_cursor
设置为 None
而 PyCharm 不知道它将成为数据库游标对象。
代码运行没有任何问题,但那些警告有点烦人!我应该如何编写代码以便 PyCharm 知道它将成为数据库游标并停止这些警告?
我尝试使用 variable: type
(PEP 526) 语法,但我不知道如何将类型设置为 cursor
。
更新: 我尝试了 a = type(db_cursor)
并且调试器将 a
显示为“psycopg2.extensions.cursor”;但是当我写 db_cursor: psycopg2.extensions.cursor
PyCharm 时显示另一个警告:
Cannot find reference 'extensions' in 'init.py | init.py'
我找到了答案。我导入了 psycopg2.extensions
并将光标定义为 dc_cursor: psycopg2.extensions.cursor
并抑制了所有警告。
import psycopg2
from psycopg2 import extensions
dc_cursor: psycopg2.extensions.cursor
def connect() -> bool:
global db_cursor
# ...