Heim > Fragen und Antworten > Hauptteil
Ich habe versucht, mit sqlalchemy Daten in eine MySQL-Datenbank zu übertragen. Wenn ich das versuche, kommt eine Fehlermeldung sqlalchemy.exc.ArgumentError:列表参数必须仅包含元组或字典
. Zum Einfügen wird der folgende Code verwendet.
def insert_data(db, table, rows): db.execute(f"INSERT INTO {table} VALUES (%s)", rows) db.commit()Der Inhalt in
rows
ist wie folgt.
[(1, 'asdsewadada', 'lajsdljasld', 'lol@gmail.com', 51)]
Ich füge also eine Liste mit Tupeln ein, erhalte aber immer noch die gleiche Fehlermeldung.
P粉9905682832023-11-08 11:46:10
从 SQLAlchemy 版本 2 开始,您应该使用字典而不是元组:
所以这应该修复你的代码:
def insert_data(db: sqlalchemy.engine.base.Engine, query: str, parameters: dict): log_headline: str = "insert_data() ::" """ :param db: :param query: INSERT INTO votes (time_cast, candidate) VALUES (:time_cast, :candidate) :param parameters: {"time_cast": time_cast, "candidate": team} :return: """ # Insert stmt = sqlalchemy.text(query) try: # Using a with statement ensures that the connection is always released # back into the pool at the end of statement (even if an error occurs) with db.connect() as conn: conn.execute(stmt, parameters=parameters) conn.commit() print(f"{log_headline} OK inserted data ") except Exception as e: # If something goes wrong, handle the error in this section. This might # involve retrying or adjusting parameters depending on the situation. print(f"{log_headline} Error {e}")