![](/img/trans.png)
[英]Select from one SQLite table based on conditioned selection from multiple other tables using 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()
我究竟做錯了什么?
您有兩個位置,即WHERE Where
。
使用AND
的條件,而不是不同的條款分開,
。 因此,SQL的結尾應為:
WHERE e.eno = w.eno AND w.pno = p.pno AND p.dno = d.dno AND budget > %s
sum(hours)
是一個函數調用,不是有效的變量名,因此它不能成為for循環的目標,即for (ename, eno, sum(hours), ...
只需組成一個變量名,例如sum_hours
。
(140000)
只是140000
,不是元組。 如果您想要一個包含一個元素的元組,則需要一個逗號,即(140000,)
。 您也可以只使用一個列表: [140000]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.