คำถามติดแท็ก sqlalchemy

SQLAlchemy เป็นชุดเครื่องมือ Python SQL และ Object Relational Mapper ที่ช่วยให้นักพัฒนาแอปพลิเคชันสามารถใช้งาน SQL ได้อย่างเต็มประสิทธิภาพและยืดหยุ่น

3
SQLAlchemy: วิธีการกรองฟิลด์วันที่?
นี่คือโมเดล: class User(Base): ... birthday = Column(Date, index=True) #in database it's like '1987-01-17' ... ฉันต้องการกรองระหว่างวันที่สองวันเช่นเลือกผู้ใช้ทั้งหมดในช่วง 18-30 ปี จะใช้กับ SQLAlchemy ได้อย่างไร? ฉันนึกถึง: query = DBSession.query(User).filter( and_(User.birthday >= '1988-01-17', User.birthday <= '1985-01-17') ) # means age >= 24 and age <= 27 ฉันรู้ว่าสิ่งนี้ไม่ถูกต้อง แต่จะแก้ไขอย่างไร?
105 python  sql  database  orm  sqlalchemy 

2
SQLAlchemy: การสร้างเทียบกับการนำเซสชันกลับมาใช้ใหม่
เพียงแค่คำถามสั้น ๆ : SQLAlchemy พูดถึงการโทรsessionmaker()ครั้งเดียว แต่เรียกSession()คลาสผลลัพธ์ทุกครั้งที่คุณต้องคุยกับฐานข้อมูลของคุณ สำหรับฉันนั่นหมายถึงครั้งที่สองที่ฉันจะทำสิ่งแรกsession.add(x)หรือสิ่งที่คล้ายกันฉันจะทำก่อน from project import Session session = Session() สิ่งที่ฉันทำจนถึงตอนนี้คือโทรออกsession = Session()ในโมเดลของฉันหนึ่งครั้งจากนั้นนำเข้าเซสชันเดียวกันทุกที่ในแอปพลิเคชัน เนื่องจากนี่เป็นเว็บแอปพลิเคชันจึงมักจะมีความหมายเหมือนกัน (เนื่องจากมีการเรียกใช้มุมมองเดียว) แต่ความแตกต่างอยู่ที่ไหน? อะไรคือข้อเสียของการใช้หนึ่งเซสชันตลอดเวลากับการใช้งานสำหรับข้อมูลในฐานข้อมูลของฉันจนกว่าฟังก์ชันของฉันจะเสร็จสิ้นแล้วจึงสร้างใหม่ในครั้งต่อไปที่ฉันต้องการพูดคุยกับฐานข้อมูลของฉัน ฉันเข้าใจว่าถ้าฉันใช้หลายเธรดแต่ละเธรดควรมีเซสชันของตัวเอง แต่เมื่อใช้scoped_session()ฉันแน่ใจแล้วว่าไม่มีปัญหาใช่ไหม โปรดชี้แจงหากข้อสันนิษฐานของฉันผิด
104 python  sqlalchemy 

4
จะสร้างฐานข้อมูลใหม่โดยใช้ SQLAlchemy ได้อย่างไร?
การใช้ SQLAlchemy อ็อบเจ็กต์ Engine ถูกสร้างขึ้นเช่นนี้: from sqlalchemy import create_engine engine = create_engine("postgresql://localhost/mydb") การเข้าถึงengineล้มเหลวหากไม่มีฐานข้อมูลที่ระบุในอาร์กิวเมนต์ถึงcreate_engine(ในกรณีนี้mydb) เป็นไปได้หรือไม่ที่จะบอกให้ SQLAlchemy สร้างฐานข้อมูลใหม่หากไม่มีฐานข้อมูลที่ระบุ
103 python  sqlalchemy 

3
ฉันจะดำเนินการแทรกและอัพเดตในสคริปต์อัปเกรด Alembic ได้อย่างไร
ฉันต้องการแก้ไขข้อมูลระหว่างการอัพเกรด Alembic ขณะนี้ฉันมีตาราง 'ผู้เล่น' ในการแก้ไขครั้งแรก: def upgrade(): op.create_table('player', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.Unicode(length=200), nullable=False), sa.Column('position', sa.Unicode(length=200), nullable=True), sa.Column('team', sa.Unicode(length=100), nullable=True) sa.PrimaryKeyConstraint('id') ) ฉันต้องการแนะนำตาราง 'ทีม' ฉันได้สร้างการแก้ไขครั้งที่สอง: def upgrade(): op.create_table('teams', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=80), nullable=False) ) op.add_column('players', sa.Column('team_id', sa.Integer(), nullable=False)) ฉันต้องการให้การย้ายข้อมูลครั้งที่สองเพิ่มข้อมูลต่อไปนี้ด้วย: เติมตารางทีม: INSERT INTO teams (name) SELECT DISTINCT team FROM players; …

3
Flask-SQLAlchemy วิธีการลบแถวทั้งหมดในตารางเดียว
ฉันจะลบแถวทั้งหมดในตารางเดียวโดยใช้ Flask-SQLAlchemy ได้อย่างไร กำลังมองหาสิ่งนี้: >>> users = models.User.query.all() >>> models.db.session.delete(users) # but it errs out: UnmappedInstanceError: Class '__builtin__.list' is not mapped

11
ฐานข้อมูลเป้าหมายไม่ทันสมัย
ฉันต้องการย้ายข้อมูลสำหรับแอป Flask ฉันใช้ Alembic อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้ Target database is not up to date. ออนไลน์ฉันอ่านว่ามันเกี่ยวข้องกับสิ่งนี้ http://alembic.zzzcomputing.com/en/latest/cookbook.html#building-an-up-to-date-database-from-scratch น่าเสียดายที่ฉันไม่ค่อยเข้าใจวิธีการทำให้ฐานข้อมูลเป็นปัจจุบันและฉันควรเขียนโค้ดที่ระบุในลิงค์อย่างไร หากคุณมีประสบการณ์เกี่ยวกับการย้ายข้อมูลโปรดอธิบายเรื่องนี้ให้ฉันฟังได้ไหม ขอบคุณ

9
SQLAlchemy - รับรายการตาราง
ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับเรื่องนี้ในเอกสารประกอบ แต่ฉันจะรับรายการตารางที่สร้างใน SQLAlchemy ได้อย่างไร ฉันใช้วิธีการคลาสเพื่อสร้างตาราง

5
sqlalchemy: วิธีการเข้าร่วมหลายตารางโดยหนึ่งแบบสอบถาม?
ฉันมีคลาสที่แมป SQLAlchemy ต่อไปนี้: class User(Base): __tablename__ = 'users' email = Column(String, primary_key=True) name = Column(String) class Document(Base): __tablename__ = "documents" name = Column(String, primary_key=True) author = Column(String, ForeignKey("users.email")) class DocumentsPermissions(Base): __tablename__ = "documents_permissions" readAllowed = Column(Boolean) writeAllowed = Column(Boolean) document = Column(String, ForeignKey("documents.name")) ฉันต้องการโต๊ะแบบนี้สำหรับuser.email = "user@email.com": email | name | …
98 python  sql  join  sqlalchemy 

9
วิธีการวนซ้ำคอลัมน์ที่กำหนดของโมเดล sqlalchemy?
ฉันพยายามหาวิธีทำซ้ำรายการคอลัมน์ที่กำหนดในโมเดล SQLAlchemy ฉันต้องการให้เขียนวิธีการทำให้เป็นอนุกรมและคัดลอกไปยังสองสามรุ่น ฉันไม่สามารถทำซ้ำได้obj.__dict__เนื่องจากมีรายการเฉพาะของ SA จำนวนมาก ใครทราบวิธีรับidและdescชื่อจากต่อไปนี้? class JobStatus(Base): __tablename__ = 'jobstatus' id = Column(Integer, primary_key=True) desc = Column(Unicode(20)) ในกรณีเล็ก ๆ นี้ฉันสามารถสร้าง: def logme(self): return {'id': self.id, 'desc': self.desc} แต่ฉันต้องการสิ่งที่สร้างขึ้นโดยอัตโนมัติdict(สำหรับวัตถุขนาดใหญ่)

5
SqlAlchemy - กรองตามคุณสมบัติความสัมพันธ์
ฉันไม่มีประสบการณ์กับ SQLAlchemy มากนักและฉันมีปัญหาซึ่งฉันไม่สามารถแก้ไขได้ ฉันลองค้นหาและลองใช้รหัสมากมาย นี่คือคลาสของฉัน (ลดลงเป็นรหัสที่สำคัญที่สุด): class Patient(Base): __tablename__ = 'patients' id = Column(Integer, primary_key=True, nullable=False) mother_id = Column(Integer, ForeignKey('patients.id'), index=True) mother = relationship('Patient', primaryjoin='Patient.id==Patient.mother_id', remote_side='Patient.id', uselist=False) phenoscore = Column(Float) และฉันต้องการสอบถามผู้ป่วยทุกคนที่มีฟีโนสคอร์ของแม่ (ตัวอย่าง) == 10 อย่างที่บอกไปว่าฉันพยายามโค้ดหลายอย่าง แต่ไม่ได้รับ วิธีแก้ปัญหาในสายตาของฉันก็คือ patients = Patient.query.filter(Patient.mother.phenoscore == 10) เนื่องจากคุณสามารถเข้าถึง.mother.phenoscoreแต่ละองค์ประกอบได้เมื่อส่งออก แต่รหัสนี้ไม่ทำ มีความเป็นไปได้ (โดยตรง) ที่จะกรองตามแอตทริบิวต์ของความสัมพันธ์ (โดยไม่ต้องเขียนคำสั่ง SQL หรือคำสั่งเข้าร่วมเพิ่มเติม) …

2
ดัชนีหลายคอลัมน์เมื่อใช้ส่วนขยาย ORM ที่เปิดเผยของ sqlalchemy
ตามเอกสารประกอบและข้อคิดเห็นในsqlalchemy.Columnคลาสเราควรใช้คลาสsqlalchemy.schema.Indexเพื่อระบุดัชนีที่มีหลายคอลัมน์ อย่างไรก็ตามตัวอย่างแสดงวิธีการทำโดยใช้วัตถุตารางโดยตรงดังนี้: meta = MetaData() mytable = Table('mytable', meta, # an indexed column, with index "ix_mytable_col1" Column('col1', Integer, index=True), # a uniquely indexed column with index "ix_mytable_col2" Column('col2', Integer, index=True, unique=True), Column('col3', Integer), Column('col4', Integer), Column('col5', Integer), Column('col6', Integer), ) # place an index on col3, col4 Index('idx_col34', mytable.c.col3, mytable.c.col4) …

6
flask-sqlalchemy หรือ sqlalchemy
ฉันใหม่ทั้งในขวดและ sqlalchemy ฉันเพิ่งเริ่มทำงานกับแอพขวดและตอนนี้ฉันใช้ sqlalchemy ฉันสงสัยว่ามีประโยชน์อย่างมากที่ฉันจะได้รับจากการใช้ flask-sqlalchemy กับ sqlalchemy หรือไม่ ฉันไม่พบแรงจูงใจที่เพียงพอในhttp://packages.python.org/Flask-SQLAlchemy/index.htmlหรือบางทีฉันอาจไม่เข้าใจค่า !! ฉันขอขอบคุณสำหรับคำชี้แจงของคุณ

5
จะสอบถามฐานข้อมูลโดยใช้ id โดยใช้ SqlAlchemy ได้อย่างไร?
ฉันต้องการค้นหาฐานข้อมูล SQLAlchemy โดยidสิ่งที่คล้ายกับ User.query.filter_by (ชื่อผู้ใช้ = 'ปีเตอร์') แต่สำหรับ id. ฉันต้องทำอย่างไร [การค้นหาผ่าน Google และ SO ไม่ช่วย]
95 python  sql  model  sqlalchemy 


6
ตัววนซ้ำ / เครื่องกำเนิดไฟฟ้า SqlAlchemy ในตัวที่มีประสิทธิภาพหน่วยความจำ?
ฉันมีตารางบันทึก MySQL ~ 10M ที่ฉันเชื่อมต่อโดยใช้ SqlAlchemy ฉันพบว่าการสืบค้นในชุดย่อยขนาดใหญ่ของตารางนี้จะใช้หน่วยความจำมากเกินไปแม้ว่าฉันจะคิดว่าฉันกำลังใช้เครื่องกำเนิดไฟฟ้าในตัวที่ดึงข้อมูลขนาดพอดีคำออกมาได้อย่างชาญฉลาด: for thing in session.query(Things): analyze(thing) เพื่อหลีกเลี่ยงสิ่งนี้ฉันพบว่าฉันต้องสร้างตัววนซ้ำของตัวเองที่กัดเป็นชิ้น ๆ : lastThingID = None while True: things = query.filter(Thing.id < lastThingID).limit(querySize).all() if not rows or len(rows) == 0: break for thing in things: lastThingID = row.id analyze(thing) นี่เป็นเรื่องปกติหรือมีบางอย่างที่ฉันขาดหายไปเกี่ยวกับเครื่องกำเนิดไฟฟ้าในตัวของ SA? คำตอบสำหรับคำถามนี้ดูเหมือนจะบ่งชี้ว่าไม่ควรคาดหวังการใช้หน่วยความจำ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.