Python:PYODBC连接链接错误08S01
我正在尝试使用pyodbc连接到我的sqlserverdb并创建一个表。我得到以下错误:Python:PYODBC连接链接错误08S01,python,python-3.x,pyodbc,Python,Python 3.x,Pyodbc,我正在尝试使用pyodbc连接到我的sqlserverdb并创建一个表。我得到以下错误: cursor.execute(query1) cnxn.commit() Traceback (most recent call last): File "<ipython-input-6-2e608ee67d50>", line 3, in <module> cursor.execute(query1) OperationalError: ('08S01', '[0
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)')
如前所述,我的SELECT query up top运行良好,我可以将表拉入python并处理它,但我似乎无法创建新表。创建游标,然后将连接移交给
pd。read\u sql
可能会使游标的事务陷入混乱。尝试将行cursor=cnxn.cursor()
沿脚本向下移动到要使用光标的位置,例如,在行cursor.execute(query1)
之前。我尝试过了,但我得到了一个新错误``cursor.execute(query1)编程错误:('42000',“[42000][Microsoft][ODBC驱动程序17 for SQL Server][SQL Server]“,”.(102)(SQLExecDirectW)“附近的语法不正确”``这是对语法的抱怨,但在CREATE TABLE语句的最后一行中,关闭列定义(右括号)
后[firstdrawns]varchar
),然后附加另一个列定义(,[Retailer]varchar
). 我觉得这有点可疑。
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()