我正在寻找一种干净的方法来在一行上添加多个值,这对应于mysql中的列列表。
基本上我有两个列表:
cols = ['Col_A', 'Col_B','Col_E', 'Col_H, 'Col_n'....]
vals = ['1','56','HEX 00 A0 DB 00', 'Pass', '87'....]
列表长度可以是100多个项目。 cols和vals列表的长度都相同,因此每个cols项都有一个相应的vals项。
我正在使用pymysql连接到运行MariaDB的网络存储设备上的SQL数据库。
以下是我的非工作函数尝试传递两个列表的片段:
def add_to_database(cols, vals):
connection = pymysql.connect(host='11.22.33.44',
user='usr',
password='pass',
db='my_db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor,
autocommit=True)
cursor = connection.cursor()
try:
cursor.execute("CREATE TABLE data_tbl (%s)" % 'id INTEGER PRIMARY KEY')
except:
pass
# Add Column and Values lists to database here
for item in cols:
try:
# First add columns if not already present
cursor.execute("ALTER TABLE data_tbl ADD COLUMN " + str(item))
except:
# Pass column add if already present
pass
cursor.execute("INSERT INTO data_tbl '{0}' VALUES '{1}';".format(cols, vals,))
conn.close()
return
我还是SQL的新手,我也一直在使用SQL语法,所以如果代码看起来有点奇怪,那么道歉。
我得到的常见错误如下:
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''('Col_A', 'Col_B', 'Col_E', 'Col_H', 'Col_...' at line 1")