无法将特定字符串写入mssql数据库

2024-05-03 04:13:50 发布

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

我对数据库和python非常陌生。我用脚本读取了许多日志文件,并将数据写入mssqlexpress数据库并使用pymssql。日志文件采用.csv格式,如下所示:

ID;REQUEST
3gix2v2h2mjmmybrf4p5blbm;49db032f0a144efeb1e0e690b4e6a26f; kzbcaakb2ex44dnhrqi4kgvt;28042afb61b44c539fbaa1ac4c303665;

ID和请求在数据库中定义为VARCHAR(50)。在

我的脚本运行得很好,我在数据库中写了大约70000个条目,直到其中一个日志文件中的一行值为:

0xaf3azaza5sb1ztogqfdmwb;934d4978a40c451b8f4080791f752453

出现。我得到了一个错误:

pymssql.ProgrammingError: (102, "Incorrect syntax near 'zaza5sb1ztogqfdmwb'.DB-Lib error message 20018, severity 15)

这是我的剧本:

for filename in os.listdir(sFolderlocation):
    if "archive" in  filename:            
        with open(sFolderlocation + os.sep + filename, 'r') as f:
            reader = csv.reader(f,delimiter=';')
            skipfirstline = True
            for row in reader:
                werte=[]
                if skipfirstline:
                    skipfirstline = False
                    continue
                werte.append(row[0])    #ID
                werte.append(row[1])    #maprequest
                werte=tuple(werte)                    
                cursor.execute(
                    "INSERT INTO webgis_test (SESSIONID,MAPREQUESTID) VALUES (%s, %s)",
                    werte)
                conn.commit()

“0xaf3a”是否以某种方式解释为十六进制,所以我得到了错误?你能帮我修好这个吗?谢谢你的帮助

当别人看到代码中有我可以改进的地方时,我真的很想听听你的建议:)


Tags: 文件csvin脚本id数据库foros
2条回答

在MSSQL中,VARCHAR字段用于存储非unicode数据。CSV文件中似乎存在MSSQL无法存储在VARCHAR字段中的无效字符。在

请注意,您发布的行以0xaf3a开头,这可能是这个无效字符的十六进制代码。在

如果您的文件有这6个符号0xaf3a,而在伪行中没有一个unicode字符,那么我猜这是pymssql中的一个错误。尝试更新到最新版本。在

希望这有帮助。在

多亏了丹古兹曼。文字没有加引号。在

以下python代码可以工作:

cursor.execute(
"INSERT INTO webgis_test2 (SESSIONID, MAPREQUESTID) VALUES ('"+werte[0]+"','"+werte[1]+"');")

相关问题 更多 >