我正在尝试使用 python 的
nvarchar(max)
库将单行插入到具有 pymssql
列(比如响应)的表中。
其他列很简单 - 一个 nvarchar(10) 列、两个 nvarchar(30) 列、两个日期列和一个 bigint 列
我真的无法控制我得到的响应字符串的长度,因此它们可以是任意长度。我搜索过的所有地方都显示(例如NVARCHAR(MAX) 的最大字符数是多少?)
nvarchar(max)
可以支持多达十亿个字符。但是,我正在使用的代码似乎在 1.3 亿个字符标记处中断。
代码:
import pymssql
from pathlib import Path
conn = pymssql.connect('server', 'user', 'password', 'db')
content = Path('file.txt').read_text()
print(len(content)) # 547031539
with conn.cursor() as cursor:
cursor.execute("Insert into table_name values (%s, %s, %s, %d, %s, %s, %s)", ('2020-05-21', '2023-03-27T20:51:50.221718', '2023-03-27T19:34:02.103253', 127671, content[:133_949_006], 'New', '2020-05-22'))
conn.commit()
回溯:
---------------------------------------------------------------------------
MSSQLDatabaseException Traceback (most recent call last)
File src\pymssql\_pymssql.pyx:461, in pymssql._pymssql.Cursor.execute()
File src\pymssql\_mssql.pyx:1087, in pymssql._mssql.MSSQLConnection.execute_query()
File src\pymssql\_mssql.pyx:1118, in pymssql._mssql.MSSQLConnection.execute_query()
File src\pymssql\_mssql.pyx:1251, in pymssql._mssql.MSSQLConnection.format_and_run_query()
File src\pymssql\_mssql.pyx:1789, in pymssql._mssql.check_cancel_and_raise()
File src\pymssql\_mssql.pyx:1835, in pymssql._mssql.raise_MSSQLDatabaseException()
MSSQLDatabaseException: (20047, b'DB-Lib error message 20047, severity 9:\nDBPROCESS is dead or not enabled\n')
During handling of the above exception, another exception occurred:
OperationalError Traceback (most recent call last)
Cell In[126], line 2
1 with conn.cursor() as cursor:
----> 2 cursor.execute(Insert into table_name values (%s, %s, %s, %d, %s, %s, %s)", ('2020-05-21', '2023-03-27T20:51:50.221718', '2023-03-27T19:34:02.103253', 127671, content[:133_949_006], 'New', '2020-05-22'))
3 conn.commit()
File src\pymssql\_pymssql.pyx:479, in pymssql._pymssql.Cursor.execute()
OperationalError: (20047, b'DB-Lib error message 20047, severity 9:\nDBPROCESS is dead or not enabled\n')