使用Python3和pymysql

时间:2016-10-04 15:02:46

标签: mysql sql python-3.x pymysql

我正在寻找一种干净的方法来在一行上添加多个值,这对应于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")

0 个答案:

没有答案