Python—如何使用';在价值上
我正在将数据从MySQL移动到MSSQL,但当我有“in”值时,insert into语句有问题 对于导出,我使用了以下代码:Python—如何使用';在价值上,python,mysql,sql,sql-server,Python,Mysql,Sql,Sql Server,我正在将数据从MySQL移动到MSSQL,但当我有“in”值时,insert into语句有问题 对于导出,我使用了以下代码: import pymssql import mysql.connector conn = pymssql.connect(host='XXX', user='XXX', password='XXX', database='XXX') sqlcursor = conn.cursor() cnx = mysql.connector.connect(user='roo
import pymssql
import mysql.connector
conn = pymssql.connect(host='XXX', user='XXX',
password='XXX', database='XXX')
sqlcursor = conn.cursor()
cnx = mysql.connector.connect(user='root',password='XXX',
database='XXX')
cursor = cnx.cursor()
sql= "SELECT Max(ID) FROM XXX;"
cursor.execute(sql)
row=cursor.fetchall()
maxID = str(row)
maxID = maxID.replace("[(", "")
maxID = maxID.replace(",)]", "")
AMAX = int(maxID)
LC = 1
while LC <= AMAX:
LCC = str(LC)
sql= "SELECT * FROM XX where ID ='"+ LCC +"'"
cursor.execute(sql)
result = cursor.fetchall()
data = str(result)
data = data.replace("[(","")
data = data.replace(")]","")
data = data.replace("None","NULL")
#print(row)
si = "insert into [XXX].[dbo].[XXX] select " + data
#print(si)
#sys.exit("stop")
try:
sqlcursor.execute(si)
conn.commit()
except Exception:
print("-----------------------")
print(si)
LC = LC + 1
print('Import done | total count:', LC)
我希望避免将数据分为列,然后检查数据中是否有',因为我的表有大约500个字段
是否有一种聪明的方法将“替换为”呢
答复:
在insert语句中添加了SET QUOTED_标识符OFF:
si = "SET QUOTED_IDENTIFIER OFF insert into [TechAdv].[dbo].[aem_data_copy]
select " + data
在MSSQL中,您可以
将QUOTED_标识符设置为OFF
,然后您可以使用双引号来转义单引号,或者使用两个单引号来转义一个引号。我认为当我将行复制到SQL时,它起作用了,但是python仍然抛出一个异常?两个单引号转义一个引号是ANSI SQL的方式。在我的insert语句中添加了SETQUOTED_标识符,它工作正常!感谢您正在使用此技术向SQL注入攻击敞开大门。
si = "SET QUOTED_IDENTIFIER OFF insert into [TechAdv].[dbo].[aem_data_copy]
select " + data