私はPython 2.7を使用してMS SQL 2012 DBでCRUD操作を実行しています。Pymssqlは動的列名を持つ辞書のリストから複数を挿入します
辞書のリスト「NewComputers」(各辞書はデータベースの行です)にデータが格納されています。
これは正常に動作しています。ただし、ソースデータ列名と宛先列名の両方がハードコードされています(列名が異なることに注意してください)。
質問:データソースの列名をハードコードする代わりに、辞書をループして列名を動的に決定する方法を教えてください。また、宛先(データベーステーブル)の列名をハードコードする代わりに、どのように列名のリストを動的にループすることができますか?
この関数を異なるデータソースの列と宛先の列に再利用したいと考えています。言い換えれば
:
"INSERT INTOコンピュータ(列名のパラメータ化さLIST)VALUES(値のパラメータ化さLIST)" ここ
が関数である:
def insertSR(NewComputers):
conn = pymssql.connect(mssql_server, mssql_user, mssql_pwd, "Computers")
cursor = conn.cursor(as_dict=True)
try:
cursor.executemany("INSERT INTO Computer (ComputerID, HostName, Type) VALUES (%(computer_id)s, %(host_name)s, %(type)s)", NewComputers) # How to make the column names dynamic?
except:
conn.rollback()
print("ERROR: Database Insert failed.")
conn.commit()
print("Inserted {} rows successfully".format(cursor.rowcount))
conn.close()