使用db.__str__()。它回来了
如果连接数据库是MySQL和
^{pr2}$
如果连接数据库是Sqlite。在
因此可以使用if语句,例如:if 'SqliteDatabase' in db.__str__():
Foo.insert_many(foo_data).on_conflict(action='IGNORE').execute()
elif 'MySQLDatabase' in db.__str__():
try:
Foo.insert_many(foo_data).execute() # or whatever you want with MySQL
except:
pass
我认为对于MySQL数据库,您可以这样做:for data in foo_data:
for k,v in data.items():
if (Foo.select(Foo.bar).where(Foo.bar == v).count()) == 0:
Foo.insert(bar=v).execute()
所以这可以是:if 'SqliteDatabase' in db.__str__():
Foo.insert_many(foo_data).on_conflict(action='IGNORE').execute()
elif 'MySQLDatabase' in db.__str__():
with db.atomic():
for data in foo_data:
for k, v in data.items():
if (Foo.select(Foo.bar).where(Foo.bar == v).count()) == 0:
Foo.insert(bar=v).execute()