2012-06-24 12 views
6

Làm cách nào để chuyển một biến chuỗi thành GQL bằng python ?? Tôi có thể làm điều đó tốt trong SQL nhưng nó không hoạt động. đây là những gì tôi có:chuyển biến chuỗi thành truy vấn gql

personalposts = db.GqlQuery("select * from PersonalPost where user_id = %s order by created desc limit 30" % user_id) 

Điều này đã giết chết tôi nhưng nên thực sự đơn giản tôi cảm thấy.

Cảm ơn!

Trả lời

8

này nên làm việc:

personalposts = db.GqlQuery("select * from PersonalPost where user_id =:1 order by created desc limit 30",user_id) 

GqlQuery cú pháp ví dụ:

q = GqlQuery("SELECT * FROM Song WHERE composer = 'Lennon, John'") 

q = GqlQuery("SELECT __key__ FROM Song WHERE composer = :1", "Lennon, John") 

q = GqlQuery("SELECT * FROM Song WHERE composer = :composer", composer="Lennon, John") 

nguồn:https://developers.google.com/appengine/docs/python/datastore/gqlqueryclass

+0

ah tuyệt vời! vì vậy: 1 ký hiệu chỉ là nói rằng đó là tham số đầu tiên được liệt kê sau khi GQL? – clifgray

2

thông số có thể bị ràng buộc bởi vị trí hoặc tên, nhìn vào tài liệu GqlQuery lớp để biết thêm thông tin.

Vì vậy, bạn có thể làm

personalposts = db.GqlQuery("select * from PersonalPost where user_id = :1 order by created desc limit 30", user_id) 

hoặc

personalposts = db.GqlQuery("select * from PersonalPost where user_id = :id order by created desc limit 30", id = user_id) 
1

Tạo một truy vấn như thế này:

query = PersonalPost.all() 
query.filter('user_id', user_id) 
query.order('-created') 

hoặc sử dụng: VỚI dấu nháy đơn xung quanh '% s' !!

personalposts = db.GqlQuery("select * from PersonalPost where user_id = '%s' order by created desc" % user_id) 
+0

là một trong những kỹ thuật này tốt hơn? Tôi có thể làm cả hai. nhanh hơn cái kia không? – clifgray

+0

Không hoạt động ?: Bạn đã tìm nạp kết quả truy vấn chưa? – voscausa

+0

Tôi đã thử điều này vào lúc này và bạn thực sự cần phải bỏ qua các dấu nháy đơn ngay bây giờ và chỉ cần đặt% s sau đó biến sau khi dấu ngoặc kép kết thúc (không có dấu phẩy ở đó). – Belhor