1

私はPythonでCounter-Strike用のゲームMODを作成していますが、基本的にはすべて完了しています。残っているのはREALデータベースをコーディングすることだけで、sqliteの経験がないので、かなりの助けが必要です。

私は、すべてのCounter-Strikeプレーヤー(ゲームエンジンから受信)に固有のPlayer属性を持つクラスと、プレーヤーの「エンティティ」を保持するクラスを持っています。-classには、レベルなど、さらに多くの属性があります。 、メソッドの名前とロード。そして、Entityは自作のPythonクラスです)。self.steamidself.entityEntity

データベースを実装するための最良の方法は何でしょうか。まず、Playerのインスタンスを、他のEntityのインスタンスと一緒にデータベースの属性として強力に保存するにはどうすればよいですか。

また、ユーザーがゲームサーバーに接続するたびにそのユーザーデータを取得する必要があります(player_connectイベントがあります)。では、どのようにデータを受信しますか?

私が見つけたすべてのチュートリアルは、文字列または整数の保存についてのみ教えており、インスタンス全体については何も教えていません。すべてのインスタンスのすべての属性を保存する必要がありますか(エンティティインスタンスには属性としてインスタンスがいくつかあり、すべてに大量の属性があります...)、またはより速く、より簡単な方法がありますか?

また、ローカルに保存されたデータベースになるので、SQL以外の言語を実際に使用することはできません。

4

2 に答える 2

0

通常、SQL データベースは基本的なデータ型のみを保持できます。モデルの属性が自動的に SQL 型にマップされるようにモデルをマップする場合は、SQLAlchemy を使用できますが、SQLlite を使用して多くの研究と試行錯誤を行う必要があります。

「SQLでなければならない」と言うとき、あなたは完全に正しくないと思います-Pythonコードを実行している場合は、好きな形式で保存できます。

ただし、Python を使用すると、インスタンス データを文字列にシリアル化できます。これはデータベースで永続化できます。

そのため、SQL で varchar(65535) フィールドを ID フィールド (たとえば、前述のプレイヤー ID 番号など) と共に作成し、次によって返される値を永続化できます。

import pickle

value = pickle.dumps(my_instance)

値を取得するときは、逆のことを行います。

my_instance = pickle.loads(value)
于 2012-09-04T16:57:26.020 に答える
0

ORMが必要です。独自のものを作成するか (これはお勧めしません)、既に存在するものを使用します。おそらく、Python で最も人気のある 2 つは、sqlalchemy と、Django にバンドルされている ORM です。

于 2012-09-04T17:00:44.970 に答える