dictのリストにデータがあります.dbにデータを挿入しようとしましたが、エラーが発生しますsqlalchemy.exc.CompileError:現在のデータベースバージョン設定での 'default'ダイアレクトは、インプレース複数挿入をサポートしていません。現在のデータベースバージョン設定の「デフォルト」ダイアレクトは、インプレイス複数行の挿入をサポートしていません
from sqlalchemy import create_engine,Table,Column,String,Integer,MetaData,ForeignKey
from sqlalchemy_utils import database_exists,create_database,drop_database
from sqlalchemy.orm import join
engine = create_engine("mysql+mysqldb://root:[email protected]:3306/sqlalchemy")
conn = engine.connect()
if database_exists(engine.url):
drop_database(engine.url)
create_database(engine.url)
metaData = MetaData()
userTable = Table("user", metaData
, Column("Id", Integer, primary_key = True)
, Column("Name", String(25)))
orderTable = Table("order", metaData
, Column("Id", Integer, primary_key = True)
, Column("UserId", Integer, ForeignKey("user.Id"))
, Column("Desc", String(250)))
try:
metaData.create_all(engine)
except Exception as ex:
print(ex)
users = [
{"Id": 1,
"Name": "user1"},
{"Id": 2,
"Name": "user2"},
{"Id": 3,
"Name": "user3"},
{"Id": 4,
"Name": "user4"}
]
orders = [
{"Id": 1,
"UserId": 1,
"Desc": "desc1"},
{"Id": 2,
"UserId": 1,
"Desc": "desc2"},
{"Id": 3,
"UserId": 2,
"Desc": "desc3"},
{"Id": 4,
"UserId": 2,
"Desc": "desc4"},
]
sql = userTable.insert().values(users)
print(sql) #this line causes the exception
conn.execute(sql)
sql = orderTable.insert().values(orders)
print(sql)
conn.execute(sql)
sql = userTable.select()
print(sql)
returnUsers = conn.execute(sql)
print(returnUsers)
sql = orderTable.select()
print(sql)
returnOrders = conn.execute(sql)
print(returnOrders)
conn.close()
更新:プリント(SQL)を使用せずに、それは完璧に動作することができます。
私は本当にinsert.Conn.execute(mutRowsInsertSql)が動作することができますバッチが、印刷で必要なもの(mutRowsInsertSql)ではありません。 –
だから私は、 'print'がこの場合呼び出すメソッドは、方言(エンジンから接続に渡されますが、テーブルクラスにはどこにも渡されません)を認識せず、標準のものを使用していると推測します。 – AndreasT