簡體   English   中英

從mysql到python中的一個表的多個表

[英]Multiple tables from mysql to one table in python

在Python中,如何使用MYSQL從多個表中創建表。 我已經找到了2個表的解決方案,但是我不知道如何為2個以上的表做解決方案。 這是模式:

emp (eno CHAR(5), ename VARCHAR(30), bdate DATE, title CHAR(2), salary DECIMAL(9,2), supereno CHAR(5), dno CHAR(5), PRIMARY KEY (eno))
dept (dno CHAR(5), dname VARCHAR(40), mgreno CHAR(5), PRIMARY KEY (dno))                      
proj (pno CHAR(5), pname VARCHAR(40), budget DECIMAL(9,2), dno  CHAR(5), PRIMARY KEY (pno)) 
workson (eno  CHAR(5), pno  CHAR(5), resp VARCHAR(20), hours SMALLINT, PRIMARY KEY (eno,pno)) 

到目前為止,這是我嘗試過的:

import mysql.connector
connection = mysql.connector.connect(user='', password='', host='', database='')
cursor = connection.cursor()
query = ("SELECT ename, w.eno, sum(hours), p.pno, pname, budget, d.dno, dname, mgreno FROM emp e, workson w, proj p, dept d WHERE e.eno=w.eno AND w.pno=p.pno AND p.dno=d.dno "+" budget > %s")
cursor.execute(query, (140000))
for (ename, eno, sum(hours), pno, pname, budget, dno, dname, mgreno) in cursor:
        print(pno, pname, dno, dname, sum(hours), mgreno)
cursor.close()

我究竟做錯了什么?

  1. 您有兩個位置,即WHERE Where

  2. 使用AND的條件,而不是不同的條款分開, 因此,SQL的結尾應為:

WHERE e.eno = w.eno AND w.pno = p.pno AND p.dno = d.dno AND budget > %s
  1. sum(hours)是一個函數調用,不是有效的變量名,因此它不能成為for循環的目標,即for (ename, eno, sum(hours), ...只需組成一個變量名,例如sum_hours

  2. (140000)只是140000 ,不是元組。 如果您想要一個包含一個元素的元組,則需要一個逗號,即(140000,) 您也可以只使用一個列表: [140000]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM