首先,这是我的设置:
我正在使用Jupyter笔记本,并尝试使用SQLAlchemy从MS SQL Server数据库导入一列数据。有问题的列包含存储长字符串文本的单元格(数据类型为nvarchar(max))。这是我的代码:
engine = create_engine('mssql+pyodbc://user:password@server:port/db_name?driver=SQL+Server+Native+Client+11.0'
stmt = 'SELECT componenttext FROM TranscriptComponent WHERE transcriptId=1265293'
connection = engine.connect()
results = connection.execute(stmt).fetchall()
执行正常,并导入字符串列表。但是当我检查它们被截断的字符串时,在字符串的中间似乎插入了以下消息:
... (8326 characters truncated) ...
字符数从字符串到字符串不等。我检查了导入的字符串有多长,而截断的字符串都限制为339或340个字符。
这是SQLAlchemy,Python还是其他一些限制?
任何帮助表示赞赏!
答案 0 :(得分:0)
这里有同样的问题!
设置:
Windows Server 2012 MS SQL Server 2016 / PostgreSQL 10.1 Python 3.6 Anaconda Distribution 我已经测试了我能做的一切,但是不能超过这个33倍的场长限制。 varchar / text似乎都受到影响,DBMS /驱动程序似乎没有任何影响。
编辑:
找到"问题的来源":https://bitbucket.org/zzzeek/sqlalchemy/issues/2837
看起来像fetchall()受此功能的影响。
我找到的唯一解决方法是:
empty_list=[]
connection = engine.connect()
results = connection.execute(stmt)
for row in results:
empty_list.append(row['componenttext'])
这样我在我的长字符串字段(> 3000 ch)中找不到任何截断。