Je veux utiliser MySQL avec Python.
Quand j'ai cherché un mappeur Python O / R, ** SQLAlchemy ** semble être célèbre, donc je vais l'utiliser cette fois.
Le tutoriel officiel est en anglais, mais il y avait un blog qui l'expliquait soigneusement en japonais, je vais donc continuer en faisant référence à cela également.
Tutoriel officiel http://docs.sqlalchemy.org/en/latest/orm/tutorial.html
Considérations sur le blog Symfoware> Comment utiliser SQLAlchemy 1 Mappage d'une table unique et ajout de données http://symfoware.blog68.fc2.com/blog-entry-1373.html
$ pip install sqlalchemy
$ pip install PyMySQL
Tout d'abord, quand j'ai écrit le code basé sur l'exemple de "Introduction Python 3 (O'Reilly)", j'étais accro à diverses choses, donc j'écrirai une note.
sqlalchemy_test.py
import sqlalchemy as sa
url = 'mysql+pymysql://root:@localhost/test_db?charset=utf8'
engine = sa.create_engine(url, echo=True)
engine.execute('DROP TABLE zoo')
engine.execute('CREATE TABLE zoo (critter VARCHAR(20) PRIMARY KEY, count INT, damages FLOAT)')
#Dans l'instruction SQL "?Ne peut pas être utilisé, donc à la place%s "est utilisé
ins = "INSERT INTO zoo (critter, count, damages) VALUES (%s, %s, %s)"
engine.execute(ins, "canard", 10, 0.0)
engine.execute(ins, "Ours", 2, 1000.0)
engine.execute(ins, "nous", 1, 2000.0)
rows = engine.execute('SELECT * FROM zoo')
for row in rows:
print(row)
Vous pouvez également utiliser le japonais en ajoutant "? Charset = utf8" à l'url d'argument de la fonction create_engine.
[Message d'erreur]
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 51-53: ordinal not in range(256)
Vous ne pouvez pas utiliser "?" Dans les instructions SQL, telles que "VALUES (?,?,?)". Utilisez plutôt "% s". (Cela semble être un bogue dans SQLAlchemy.)
[Message d'erreur]
not all arguments converted during string formatting
Le nom du fichier de script ne doit pas être "sqlalchemy.py". De plus, il ne doit pas y avoir de fichier nommé "sqlalchemy.py" dans le répertoire où se trouve le fichier de script.
[Message d'erreur]
module 'sqlalchemy' has no attribute 'create_engine'
Essayez d'utiliser SQLAlchemy + MySQL (Partie 2)
Recommended Posts