繁体   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