是否可以使用 pymssql 将 python 列表写入数据库?

Posted

技术标签:

【中文标题】是否可以使用 pymssql 将 python 列表写入数据库?【英文标题】:Is it possible to write a python list into a database with pymssql? 【发布时间】:2019-10-18 08:22:55 【问题描述】:

我很想通过 pymssql 将 python 列表写入数据库表。 我的目标是将每个列表条目写入同一列的不同行。

当我尝试这个时,我得到了错误:

ValueError: 'params' arg () 只能是元组或字典。

有没有办法使用 pymssql 或者我应该使用其他方法?

我的代码:

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



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

text = cursor.fetchall()

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)




conn = pymssql.connect(
    host='x',
    port=x,
    user='x',
    password='x',
    database='x'
)

cursor = conn.cursor()

cursor.execute('INSERT INTO mytablename (columnname) VALUES (?);', [','.join(clear)])

conn.close()

【问题讨论】:

【参考方案1】:

你可以使用executemany:

cursor.executemany('INSERT INTO mytablename (columnname) VALUES (%s);', clear)

【讨论】:

谢谢,我不再收到错误消息了。但不知何故,SQL 语句没有向我的数据库表中写入任何内容。你知道为什么吗? @gython 你用conn.commit()吗? 我正在使用提交,我只是注意到该语句只写在表的最后一行。但我需要将新条目与数据库表中的旧条目相匹配。所以我可能不得不使用 UPDATE 而不是 INSERT? @gython 如果是这样的话 - 是的

以上是关于是否可以使用 pymssql 将 python 列表写入数据库?的主要内容,如果未能解决你的问题,请参考以下文章

使用 python pymssql 将二进制文件插入 MSSQL db (varbinary)

Python 学习 第十三篇:数据的读写-文件DataFramejson和pymssql

如何从 pymssql 获取列数据类型?

Python 2.7 pyodbc 或 pymssql 与 R RODBC

Pymssql 可以与 MS SQL Server 建立安全连接 (SSL) 吗?

Python pymssql 插入错误