MySQLデータベースをバックアップするスクリプトを作成しようとしています。 config.yml
ファイル:
DB_Host :'localhost'
DB_USER : 'root'
DB_USER_PASSWORD:'P@$$w0rd'
DB_NAME : 'moodle_data'
BACKUP_PATH : '/var/lib/mysql/moodle_data'
次に、このファイルを読む必要があります。私のPythonこれまでのコード:
import yaml
config = yaml.load(open('config.yml'))
print(config.DB_NAME)
そして、ここに現れるエラーがあります:
file "conf.py", line 4, in <module>
print(config.DB_NAME)
AttributeError: 'str' object has no attribute 'DB_NAME'
誰かが私が間違った場所を知っていますか?
2つの問題があります。
config['DB_NAME']
。ファイルが次のようにフォーマットされている場合は機能するはずです。
DB_Host: 'localhost'
DB_USER: 'root'
DB_USER_PASSWORD: 'P@$$w0rd'
DB_NAME: 'moodle_data'
BACKUP_PATH: '/var/lib/mysql/moodle_data'
データベースをバックアップするには、_.sql
_ファイルとしてエクスポートできるはずです。特定のインターフェイスを使用している場合は、Export
を探します。
次に、Pythonのyamlパーサーの場合。
_DB_Host :'localhost'
DB_USER : 'root'
DB_USER_PASSWORD:'P@$$w0rd'
DB_NAME : 'moodle_data'
BACKUP_PATH : '/var/lib/mysql/moodle_data'
_
は_key-value
_のことです(申し訳ありませんが、そのためのより良いWordは見つかりませんでした)。特定の言語(PHPと思う)では、オブジェクトはobjectsに変換されます。pythonけれども、それらはdictsに変換されます(yamlパーサーはJSONパーサーも行います)。
_# access an object's attribute
my_obj.attribute = 'something cool'
my_obj.attribute # something cool
del my_obj.attribute
my_obj.attribute # error
# access a dict's key's value
my_dict = {}
my_dict['hello'] = 'world!'
my_dict['hello'] # world!
del my_dict['hello']
my_dict['hello'] # error
_
だから、それは辞書の非常に簡単なプレゼンテーションですが、それであなたが行く必要があります(help(dict)
を実行し、そして/または見てください ここ あなたはそれを後悔しません)
あなたの場合:
_config['DB_NAME'] # moodle_data
_
これを試して:
import yaml
with open('config.yaml', 'r') as f:
doc = yaml.load(f)
「DB_NAME」にアクセスするには、次を使用できます。
txt = doc["DB_NAME"]
print txt