如何使用python来执行mysql并使用replace into来处理255个以上的变量?

2024-10-01 15:44:22 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我正在使用的代码

con.execute("""
REPLACE INTO T(var1,var2,...,var300)VALUES(?,?,....?)""",(var1,var2,...,var300)

如果我有var1-var255,这个语句可以正常工作,一旦超过这个值,它就会给我一个错误。。。 到目前为止,我可以把T分成两个不同的时间段

^{pr2}$

这没有给我任何错误,但是我在表“T”中的最后一个值只会出现在第二个execute语句中,var1, var2, ... var 150都将被替换为null


Tags: 代码executevar错误语句conreplacevalues
2条回答

在MySQL中使用超过255个列(与MySQLdb接口)似乎没有任何固有问题:

import MySQLdb
import config

connection = MySQLdb.connect(
    host = config.HOST, user = config.USER,
    passwd = config.PASS, db = 'test')
cursor = connection.cursor()

cols = ['col{i:d}'.format(i =i) for i in range(300)]
types = ['int(11)']*len(cols)
columns = ','.join('{f} {t}'.format(f = f, t = t) for f, t in zip(cols, types))

sql = '''CREATE TABLE IF NOT EXISTS test (
       id INT(11) NOT NULL AUTO_INCREMENT,
       {c},
       PRIMARY KEY (id) 
       )'''.format(c = columns)

cursor.execute(sql)

sql = '''REPLACE INTO test({c}) VALUES ({v})'''.format(
    c = ','.join(cols),
    v = ','.join(['%s']*len(cols)))

cursor.execute(sql, range(300))
result = cursor.fetchall()

这样可以将行添加到test.test中,而不会出现问题。在

你试过改用update吗?在

MySQL文档说明如下: REPLACE的工作方式与INSERT完全相同,只是如果表中的旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前,旧行将被删除

相关问题 更多 >

    热门问题