工場出荷時に少年とバッチを生成するために、SQLAlchemyのデータベーステーブルのデータを使用して

データは、単一の、比較的単純である場合は、テストプロセスは、必然的に、テストデータを作成する必要がありますが、それは大量のデータ、多くの問題である場合。

最近SQLAlchemyModelFactory SQLAlchemyのモデルによってクラスをサポートしています。このPythonのサードパーティのライブラリFactory_boy見て、単に非常に使いやすい感じ、ビットを試してみてください。

 

依存性:

工場出荷時に少年== 2.12 0.0 
SQLAlchemyのの == 1.3.7 
mysqlの -connector-のpython == 8.0.17

 

ユーザテーブル(MySQLの):

1  CREATE  TABLE ` ユーザー(`
 2    `id` INT11NOT  NULL 3    ` NAME`のVARCHAR20DEFAULTの NULL 4    PRIMARY  KEY ( `id`)
 5)ENGINE =のInnoDB DEFAULTの CHARSET = UTF8コメント= ' 用户表" ;

 

 boytest.py

1  から SQLAlchemyのをインポート列、文字列、整数、ユニコード、create_engine
 2  から sqlalchemy.ext.declarative インポートdeclarative_base
 3  から sqlalchemy.ormのインポートscoped_session、sessionmaker
 4  
5ベース= declarative_base()
 6  
7  クラスのユーザ(塩基):
 8      表的名字:
9      __tablename__ = ' ユーザ' 
10  
11      表的结构:
12      、ID =列(文字列(20)、PRIMARY_KEY = TRUE)
 13     名前=列(文字列(20 ))
 14  
15エンジン= create_engine(' のMySQL + mysqlconnector://オートテスト:[email protected]:3306 / TESTDB ' 16 DBSession = scoped_session(sessionmaker(バインド=エンジン)) 这里需要使用scoped_session 
17  
18  Base.metadata.create_all(エンジン)#创建表
19  
20  輸入工場
 21  
22  クラスUserFactory(factory.alchemy.SQLAlchemyModelFactory):
 23      クラスのメタ:
 24          モデル= ユーザー
 25          sqlalchemy_session = DBSession    SQLAlchemyのセッションオブジェクト
26          sqlalchemy_session_persistence = " コミット"  #を"コミット" - (コミットセッションを実行する)# 'フラッシュ' - )(セッション・フラッシュを行う
27  
28      ID = factory.Sequence(ラムダN:N)
 29      #のID = 9 
30      名= factory.Sequence(ラムダ N:U ' ユーザー%D '%のN)
 31  
32  清除表内容
33  DBSession.query(ユーザー).delete()
 34  DBSession.query(ユーザ).filter(ユーザ.ID == 0).delete()
35  DBSession.commit()
36  
37 [  
38は、 #1 ユーザー= DBSession.query(ユーザー).ALL()
39  ユーザーがusr用:
40       プリント(USR .__ dict__にマジック)
41は 
42である #はレコードを作成し
43である UserFactory()
 44れる #1 UserFactory()
45  100を作成します記録
46は、 factory.build_batch(UserFactory、100 47  DBSession.commit()
48人のユーザー= DBSession.query(ユーザー).ALL()
 49  のために USR のユーザー:
 50      印刷(。usrの__dict__ 51であります プリント(LEN(ユーザ))
 52 DBSession.remove()

 

結果:

 

レコードを達成するために、ライン100内に挿入されるfactory.build_batch(UserFactory、100)は、非常に便利です。

参考文献:
https://www.cnblogs.com/wangtaobiu/p/11007547.html
https://blog.csdn.net/zhyh1435589631/article/details/51549944
https://www.liaoxuefeng.com/wiki/897692888725344 / 955,081,460,091,040
https://factoryboy.readthedocs.io/en/latest/orms.html#sqlalchemy

おすすめ

転載: www.cnblogs.com/moonpool/p/11370502.html