【问题标题】:Problem Connection SQL Server for Class in PythonPython中的类问题连接SQL Server
【发布时间】:2019-03-20 02:33:43
【问题描述】:

我没有连接到数据库。连接失败:

当我执行类调用时,我无法解决 pyodbc 给出以下错误:

这是文件 Conn_BancoDeDados.py 中的一个类

class Conn_BancoDeDados:
    def connect():

        server = 'tcp:xxx.xxx.xxx.xxx' 
        database = 'DB' 
        username = 'user' 
        password = '@pass' 
        cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
        cur = cnxn.cursor()
        return cur

这是一个调用连接和查询来获取数据。

import pyodbc
from  CONNECT import Conn_BancoDeDados
#
    conn = Conn_BancoDeDados.connect()

    conn.execute("SELECT IP FROM TB_SERVIDORES WHERE TIPO = 'PRODUCAO'")

    for row in conn.fetchall():
        print(row)
    conn.close()

这是一个失败:


NameError                                 Traceback (most recent call last)
<ipython-input-18-902c042ad375> in <module>()
----> 1 conn = Conn_BancoDeDados.connect()
      2 
      3 conn.execute("SELECT IP FROM TB_SERVIDORES")
      4 
      5 for row in conn.fetchall():

~\Phyton - datascience\CONNECT.py in connect()
      7         username = 'users'
      8         password = '@pass'
----> 9         cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
     10         cur = cnxn.cursor()
     11         return cur

NameError: name 'pyodbc' is not defined

怎么了?

【问题讨论】:

  • 你正确导入pyodbc了吗?
  • 是的,我进口了。
  • 你有这个导入声明import pyodbc 吗?
  • 是的,我导入了。我的问题是当我调用连接文件时。 import pyodbc from CONNECT import Conn_BancoDeDados conn = Conn_BancoDeDados.connect() conn.execute("SELECT IP FROM TB_SERVIDORES") for row in conn.fetchall(): print(row) conn.close()
  • 您能否编辑帖子以反映您导入的内容以及导致错误的原因。

标签: python sql sql-server python-3.x python-2.7


【解决方案1】:

在代码中的某个位置,在调用任何与 SQL 相关的函数之前,请执行以下操作:import pyodbc

您需要先导入一个包,然后才能使用它的任何功能(您正在尝试这样做)。

【讨论】:

  • 已导入。我没有在代码中放这里的导入。
  • 如果这解决了您的问题,请接受它作为答案。
  • 没有解决我的问题。当我更改为通过文件“实体”获取连接时,会发生上述故障。
  • 从 CONNECT 导入 Conn_BancoDeDados
  • conn = Conn_BancoDeDados.connect() conn.execute("SELECT IP FROM TB_SERVIDORES") for row in conn.fetchall(): print(row) conn.close()
【解决方案2】:

我在 .py 文件和我的类中完成了导入,然后我将其导入到我正在使用“从文件导入类”处理的 .py 中,并且它可以工作。 我认为,如果您仅在要从中导入的另一个 .py 文件中的类中使用它,那么如果您还在当前正在处理的 .py 中导入 pyodbc ,那么它就可以工作。

【讨论】:

    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多