如何使用 pymssql 创建多个连接?
How can I create multiple connections with pymssql?
我正在尝试通过 pymssql 创建 table,但出现错误:
接口错误:连接已关闭。
我已经尝试将 CREATE TABLE 语句放入与 SELECT 语句相同的连接中,但是当我这样做时没有创建 Table。
有人对此有解决方法吗?
这是我的代码:
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)
见下文,我删除了你的 conn.close()
函数
从 bs4 导入 BeautifulSoup 作为 bs
重新进口
从 collections.abc 导入 Iterable
导入 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)
当您管理与任何连接器的连接时,当您关闭连接并想要执行另一个查询时,您需要以类似的方式创建一个新连接:
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 实现它,找到 here 文档来实现它:
我正在尝试通过 pymssql 创建 table,但出现错误:
接口错误:连接已关闭。
我已经尝试将 CREATE TABLE 语句放入与 SELECT 语句相同的连接中,但是当我这样做时没有创建 Table。
有人对此有解决方法吗?
这是我的代码:
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)
见下文,我删除了你的 conn.close()
函数
从 bs4 导入 BeautifulSoup 作为 bs 重新进口 从 collections.abc 导入 Iterable 导入 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)
当您管理与任何连接器的连接时,当您关闭连接并想要执行另一个查询时,您需要以类似的方式创建一个新连接:
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 实现它,找到 here 文档来实现它: