Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 2

Курсор statement (python3 - odbc|freetds - mssql)

23.02.2016, 22:12. Показов 986. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано:
  1. 50-150 kk (миллионов) записей в БД (MSSQL)
  2. Подключение из питона по odbc (pyodbc|freetds)
Задача:
  1. Итерируя выборку делать некоторые апдейты
  2. В оперативную память никак нельзя взять все сразу (т.е. вариант fetchall - не подходит)
Проблема:

Python
1
2
3
4
5
6
7
8
9
10
11
db = pyodbc.connect()
 
cursor_1 = db.cursor()
cursor_2 = db.cursor()
 
sql1 = 'SELECT ....'
sql2 = 'UPDATE ....'
 
for row in cursor_1.execute(sql1):
    ...
    cursor_2.execute(sql2,(params))
Этот код выведет ошибку состояния курсора. Т.е. я пока пришел к тому что храниться где-то состояние последнего запроса к бд.. но это похоже на ограничение t-sql курсора. Хотя я вроде как не определяю его.

В итоге тут может быть несколько вопросов:
  1. как обойти это ограничение?
  2. Что из себя представляет курсор pyodbc (t-sql курсор, серверный курсор, клиентский курсор..) и просьба чуть подробнее.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.02.2016, 22:12
Ответы с готовыми решениями:

Си + mssql + SQLBindParameter + ODBC
Что-то не выходит у меня каменный цветок... К базе подключается нормально, таблицу дропает, потом создаёт - всё ок. Если...

Нюансы синтаксиса: как работают выражения вида statement = statement = statement?
Всем привет. Что значит такое выражение в c++? c = c2 = c/2; и как вообще работают такие выражения?

Mssql через odbc - не отдается кол-во строк
qry.SQL =query$ Set res.Query = qry res.CacheLimit=DB_NONE res.Execute Print res.NumRows выдает -1 А при дальнейшем переборе ...

3
224 / 209 / 63
Регистрация: 26.05.2011
Сообщений: 363
24.02.2016, 04:06
Очень смущает меня запись:
Python
1
for row in cursor_1.execute(sql1):
Думаю правильнее будет так:
Python
1
2
cursor_1.execute(sql1)
for row in iter(cursor_1.fetchone, None):
0
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 2
09.04.2016, 12:38  [ТС]
Это одно и то же.

В общем - в пределах одного коннекта с БД - курсоров можно создать кучу конечно. НО внутренняя переменная которая отвечает за состояние курсора одна на все курсоры в пределах потока.

кстати есть клевый граббер grab - там в несколько потоков приложение выполняется. Там все гуд работает.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.04.2016, 21:16
Причем тут grub, это фреемворк для парсинга сайтов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2016, 21:16
Помогаю со студенческими работами здесь

Подключение к базе данным MSSQL через ODBC
Дважды я пытался подключиться к базе данным, первый раз через ODBC, у меня получилось, зашел Администрирования ->Источник данных ODBC,...

Как правильно прописать сервер в подключении к БД MSSQL через ODBC
Есть строка подключения к серверу MS SQL вида: $dsn = "odbc:DRIVER={SQL Server Native Client...

ODBC API - как установить курсор по фильтру?
Я создал курсор SQL_CURSOR_DYNAMIC и SQL_SCROLLABLE с помощью функций SQLSetStmtAttr() и SQLExecute() Все прекрасно работает....

Как не ставя SQL Server можно через ODBC подключиться к базе созданной в mssql
Подскажите пожалуйста. Мне нужно написать веб приложение. Раньше писал, но база была Access, а теперь мне дали базу написанную на sql...

Freetds
Как вывести русские буквы а то одни знаки вопросов


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru