首页 > 解决方案 > Python:PYODBC 连接链接错误 08S01

问题描述

我正在尝试使用 pyodbc 连接到我的 sql server db 并创建一个表。我收到以下错误:

cursor.execute(query1)
cnxn.commit()
Traceback (most recent call last):

  File "<ipython-input-6-2e608ee67d50>", line 3, in <module>
    cursor.execute(query1)

OperationalError: ('08S01', '[08S01] [Microsoft][ODBC Driver 17 for SQL Server]Communication link failure (0) (SQLExecDirectW)')

我不确定为什么我不能连接到 sql server 并创建一个表,但是我可以使用 SELECT 语句从数据库中提取数据。任何人都可以建议吗?

from datetime import date
import pandas as pd
import pyodbc
import numpy as np

"""
for driver in pyodbc.drivers():
    print(driver)
"""

#define the server name, database and login credentials
server = '#########'
database ='########'
username='########'
password='########'

#define connection string
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server}; \
                      SERVER=' + server +';\
                      DATABASE='+ database +';\
                      UID='+ username +';\
                      PWD='+ password +';')

cursor = cnxn.cursor()

#pyodbc.drivers()

#SQL select query to call the table Test_M_Data
sql = "SELECT TOP 1000 * FROM vintage_data"

df = pd.read_sql(sql,cnxn)

#there's python code in between but it all works fine. the problem is down below...


query1 = "CREATE TABLE Onalerona.[dbo].vintage_data_2 \
          ([ConsumerID] float,[IDno] varchar(50),[SubscriberID] numeric(11,0),\
          [OpeningBalanceAmt] numeric(19,4),[AccountOpenedDate] varchar,\
          [RetroDate] varchar,[status1] varchar(8),[status2] varchar(8),\
          [status3] varchar(8),[status4] varchar(8),[status5] varchar(8),\
          [status6] varchar(8),[status7] varchar(8),[status8] varchar(8),\
          [status9] varchar(8),[status10] varchar(8),[status11] varchar(8),\
          [status12] varchar(8),[status13] varchar(8),[status14] varchar(8),\
          [status15] varchar(8),[status16] varchar(8),[status17] varchar(8),\
          [status18] varchar(8),[status19] varchar(8),[status20] varchar(8),\
          [status21] varchar(8),[status22] varchar(8),[status23] varchar(8),\
          [status24] varchar(8),[ukey] varchar(150),\
          [stat1] varchar(8),[stat2] varchar(8),\
          [stat3] varchar(8),[stat4] varchar(8),[stat5] varchar(8),\
          [stat6] varchar(8),[stat7] varchar(8),[stat8] varchar(8),\
          [stat9] varchar(8),[stat10] varchar(8),[stat11] varchar(8),\
          [stat12] varchar(8),[stat13] varchar(8),[stat14] varchar(8),\
          [stat15] varchar(8),[stat16] varchar(8),[stat17] varchar(8),\
          [stat18] varchar(8),[stat19] varchar(8),[stat20] varchar(8),\
          [stat21] varchar(8),[stat22] varchar(8),[stat23] varchar(8),\
          [stat24] varchar(8), [Months_Diff] int, [Month_Opened] varchar,\
          [FirstArrears] varchar), [Retailer] varchar"

cursor.execute(query1)
cnxn.commit()

如前所述,我的 SELECT 查询顶部工作正常,我可以将表拉入 python 并处理它,但是我似乎无法创建一个新表。

标签: pythonpython-3.xpyodbc

解决方案


推荐阅读