Как я могу создать несколько соединений с pymssql? - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь создать таблицу с помощью pymssql, но получаю сообщение об ошибке:

InterfaceError: Соединение закрыто.

Я уже пытался поместить оператор CREATE TABLE вта же связь с оператором SELECT, но когда я это сделал, таблица не была создана.

Кто-то получил обходной путь для этого?

Вот мой код:

from bs4 import BeautifulSoup as bs
import re
from collections.abc import Iterable
import pymssql


conn = pymssql.connect(
    host='xxxx',
    port=xxx,
    user='xxxx',
    password='xxxx',
    database='xxxx'
)
cursor = conn.cursor() 
cursor.execute('SELECT xxx FROM xxx')

text = cursor.fetchall()


conn.close()

c1 = conn.cursor()
c1.execute("""
IF OBJECT_ID('persons', 'U') IS NOT NULL
    DROP TABLE persons
CREATE TABLE persons (
    id INT NOT NULL,
    name VARCHAR(100),
    salesrep VARCHAR(100),
    PRIMARY KEY(id)
)
"""
          )
conn.close()

raw = []  
raw.append(text)
raw1 = str(raw)
soup = bs(raw1, 'html.parser')
autor = soup.get_text()

clear = []
s = autor.replace('\\n', '')
clear.append(s)

print (clear)

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Когда вы управляете соединением с любым из соединителей, когда вы закрываете соединение и хотите выполнить другой запрос, вам нужно создать новое соединение аналогичным образом:

conn = pymssql.connect(
    host='xxxx',
    port=xxx,
    user='xxxx',
    password='xxxx',
    database='xxxx'
)
cursor = conn.cursor() 
cursor.execute('SELECT xxx FROM xxx')
text = cursor.fetchall()
conn.close()
conn = pymssql.connect(
    host='xxxx',
    port=xxx,
    user='xxxx',
    password='xxxx',
    database='xxxx'
)
cursor = conn.cursor()
cursor.execute("""
IF OBJECT_ID('persons', 'U') IS NOT NULL
    DROP TABLE persons
CREATE TABLE persons (
    id INT NOT NULL,
    name VARCHAR(100),
    salesrep VARCHAR(100),
    PRIMARY KEY(id)
)
"""
)
conn.close()

В любом случаеУправление соединениями с БД не является лучшей практикой, поэтому рекомендуется использовать пул соединений. К сожалению, pymssql не имеет внутреннего механизма пула соединений, но вы можете реализовать его через SQLAlchemy, найдя здесь документацию для этого:

0 голосов
/ 17 октября 2019

См. Ниже, я удалил вашу conn.close() функцию

из bs4 import BeautifulSoup как bs import re из collection.abc import Итеративный импорт pymssql

conn = pymssql.connect(
    host='xxxx',
    port=xxx,
    user='xxxx',
    password='xxxx',
    database='xxxx'
)
cursor = conn.cursor() 
cursor.execute('SELECT xxx FROM xxx')

text = cursor.fetchall()


#conn.close() 

c1 = conn.cursor()
c1.execute("""
IF OBJECT_ID('persons', 'U') IS NOT NULL
    DROP TABLE persons
CREATE TABLE persons (
    id INT NOT NULL,
    name VARCHAR(100),
    salesrep VARCHAR(100),
    PRIMARY KEY(id)
)
"""
          )
conn.close()

raw = []  
raw.append(text)
raw1 = str(raw)
soup = bs(raw1, 'html.parser')
autor = soup.get_text()

clear = []
s = autor.replace('\\n', '')
clear.append(s)

print (clear)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...