我正在扩展一点。但是别担心,我不会从桥上跳下来的
我想在我的数据库中插入。但不幸的是,我收到了以下错误消息:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/protocol.py", line 247, in parse_column
flags, _) = struct_unpack('<xHIBHBxx', packet)
struct.error: unpack requires a buffer of 13 bytes
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./bahncardkk-expo.py", line 240, in <module>
sqlinsert(postaktdatumhms,betrag,nbetrag,GUID,sqldescription) #gebe die gesammelte Daten in die def funktion sqlinsert für ein SQL Injection
File "./bahncardkk-expo.py", line 198, in sqlinsert
mydb.commit()
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/connection.py", line 852, in commit
self._execute_query("COMMIT")
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/connection.py", line 871, in _execute_query
self.cmd_query(query)
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/connection.py", line 490, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/connection.py", line 404, in _handle_result
columns[i] = self._protocol.parse_column(
File "/usr/local/lib/python3.8/dist-packages/mysql/connector/protocol.py", line 249, in parse_column
raise errors.InterfaceError("Failed parsing column information")
mysql.connector.errors.InterfaceError: Failed parsing column information
代码:
from time import sleep
from datetime import datetime
import mysql.connector
import requests
import random
# SQL INSERT ---------------------------------------------------------------------------
mydb = mysql.connector.connect(
host="qwertz",
user="user",
password="forget",dariokoceic
database="gnucash",
buffered=True
)
nbetrag = -500
betrag = 500
GUID = f263a9ab9960443e89479d018d37c1cc
sqldescription = 'Einkaufen'
postaktdatumhms = '20201223092741'
def sqlinsert (postaktdatumhms,betrag,nbetrag,GUID,sqldescription):
sleep(1)
# und einige Zufallsvariabeln erstellt werden
idkey1 = ("ffffdf1000000000000000"+("%5.0f"%(random.uniform(10000,18000)))+("%5.0f"%(random.uniform(10000,19000))))
idkey2 = ("ffffdf2000000000000000"+("%5.0f"%(random.uniform(10000,19000)))+("%5.0f"%(random.uniform(10000,19000))))
idkeyt = ("ffffdfd000000000000000"+("%5.0f"%(random.uniform(10000,20000)))+("%5.0f"%(random.uniform(10000,19000))))
idzufk = ("%5.0f"%(random.uniform(10000,22000)))
aktdatum = datetime.now().strftime("%Y%m%d")
enteraktdatumhms = datetime.now().strftime("%Y%m%d%H%M%S")
sqldescription = str(sqldescription[:10])
print(sqldescription)
# Abbuchungskonto SOLL - Kreditkart
sqlcursor.execute("""
INSERT INTO `gnucash`.`splits` (`guid` , `tx_guid`, `account_guid` , `memo`, `action`, `reconcile_state`, `reconcile_date` , `value_num`, `value_denom`, `quantity_num`, `quantity_denom`)
VALUES (%s ,%s ,'3a91ecde057dcf3c00f33219b076cfdc', ' ' , ' ' , 'n' , '1970-01-01 00:00:00', %s , '100' , %s , '100');
""",(idkey1,idkeyt,nbetrag,nbetrag))
mydb.commit()
# Zubuchsqlinsertungskonto HABEN - z.B. Essen
sqlcursor.execute("""
INSERT INTO `gnucash`.`splits` (`guid` , `tx_guid`, `account_guid` , `memo`, `action`, `reconcile_state`, `reconcile_date` , `value_num`, `value_denom`, `quantity_num`, `quantity_denom`)
VALUES (%s , %s , %s , ' ' , ' ' , 'n' , '1970-01-01 00:00:00', %s , '100' , %s , '100');
""",(idkey2,idkeyt,GUID,betrag,betrag))
mydb.commit()
# Transaktions ID (verbindet die zwei oberen zur einer Transaktions mitereinander) und wann
sqlcursor.execute("""
INSERT INTO `gnucash`.`slots` (`id` , `obj_guid`, `name` , `slot_type`, `int64_val`, `timespec_val` , `numeric_val_num`, `numeric_val_denom`, `gdate_val`)
VALUES ( %s , %s , 'date-posted', '10' , '0' , '1970-01-01 00:00:00', '0' , '1' , %s );
""",(idzufk,idkeyt,aktdatum))
mydb.commit()
# Transaktionsbeschreibung sowie enter_date und Datum wann das geeschäfts statt fand
sqlcursor.execute("""
INSERT INTO `gnucash`.`transactions` (`guid` , `currency_guid` , `num`, `post_date`, `enter_date`, `description`)
VALUES ( %s , 'bc59ea336e0e432d98568cc5ba4a5e5b', ' ' , %s , %s , %s );
""",(idkeyt,postaktdatumhms,enteraktdatumhms,sqldescription))
mydb.commit()
sqlinsert (postaktdatumhms,betrag,nbetrag,GUID,sqldescription)
我不明白错误在哪里。如何在结构中传输更多字节? 紧接着,我得到了一个“解析列信息失败”的错误。我怀疑有些绳子太长了。我可能得缩短它。但在db中的关键列中,它可以变长,这是description,并设置为VARCHART(2048)。没有那么长的描述。有人会押韵吗
目前没有回答
相关问题 更多 >
编程相关推荐