30/09/2018, 19:48

Kết nối Peewee với MySQL

Mình đang bắt đầu học cách kết nối CSDL với Python, khi connect ORM peewee tới MySQL thì gặp lỗi sau:

Đây là cái script students.py:

from peewee import *

db = MySQLDatabase('students.db')

class Student(Model):
	username = CharField(max_length=255, unique=True)
	points = IntegerField(default=0)

	class Meta:
		database = db


students = [
	{'username': 'huyvo',
	'points': 10},
	{'username': 'duytran',
	'points': 5},
	{'username': 'hiennguyen',
	'points': 5},
	{'username': 'tintran',
	'points': 1},
	{'username': 'hunghuynh',
	'points': 2},
	{'username': 'cuongtruong',
	'points': 3}
]

def add_students():
	for student in students:
		try:
			Student.create(
				username=student['username'], 
				points=student['points']
			)
		except IntegrityError:
			student_record = Student.get(username=student['username'])
			student_record.points = student['points']
			student_record.save()

def top_student():
 	student = Student.select().order_by(Student.points.desc()).get()
 	return student

if __name__ == '__main__':
	db.connect()
	db.create_tables([Student], safe=True)
	add_students()
	print("Our top student at the moment is: {0.username}.".format(top_student()))
Tinpee PT viết 22:03 ngày 30/09/2018

Vấn đề ở đây là chưa connect tới Mysql được, để connect cần có user password.
Để khắc phục vấn đề này, dùng plugin playhouse mặc định của peewee luôn

>>> from peewee import *
>>> from playhouse.db_url import connect
#Use mysql://user:passwd@ip:port/my_db thay cho postgresl như dưới nhé :)
>>> db = connect("postgresql://golang:golang@localhost:5432/golang")
>>> db.connect()
>>> class Student(Model):
#fields
>>> db.create_table(Student) 
#Code

Thấy không ổn thì có thể dùng SQLAlchemy

Bài liên quan
0