0
我有一个包含表tbl1,tbl2和tbl3的数据库db1。使用python跨越单独的数据库的MySQL MERGE表格
我也有一个空的数据库db2。
如何创建MERGE表mrg1,它将数据库db1中的tbl1,tbl2和tbl3的内容合并,但使用python/mysql连接器存储在数据库db2中?
此问题与wroberts question相同,但使用python。
这是我已经试过:
import mysql.connector
db1 = 'testaa'
cnx1 = mysql.connector.connect(user='nev', password='***',host='127.0.0.1',database=db1)
cursor1 = cnx1.cursor()
db2 = 'vic'
cnx2 = mysql.connector.connect(user='nev', password='***',host='127.0.0.1',database=db2)
cursor2 = cnx2.cursor()
cnx = [cnx1,cnx2]
print ("cnx1",cnx1)
print ("cnx2",cnx2)
tables = ["RESA","TESTA"]
# count rows in each table
for db in cnx:
cursor = db.cursor()
for tab in tables:
query = ("SELECT count(*) FROM %s") % tab
cursor.execute(query)
for (count) in cursor:
print("{} {} {}".format(db,query,count))
print ("")
# merge the tables from vic into testaa
for tab in tables:
query = ('insert into {}.{} (select * from {}.{})'.format(db1,tab,db2,tab))
cursor1.execute(query)
# run count again to check results
for db in cnx:
cursor = db.cursor()
for tab in tables:
query = ("SELECT count(*) FROM %s") % tab
cursor.execute(query)
for (count) in cursor:
print("{} {} {}".format(db,query,count))
print ("")
结果表明成功,表计双,但是当我从MySQL视图没有发生变化。上述运行后
('cnx1', <mysql.connector.connection.MySQLConnection object at 0x100f9dd90>)
('cnx2', <mysql.connector.connection.MySQLConnection object at 0x100fad310>)
<mysql.connector.connection.MySQLConnection object at 0x100f9dd90> SELECT count(*) FROM RESA (3,)
<mysql.connector.connection.MySQLConnection object at 0x100f9dd90> SELECT count(*) FROM TESTA (19,)
<mysql.connector.connection.MySQLConnection object at 0x100fad310> SELECT count(*) FROM RESA (3,)
<mysql.connector.connection.MySQLConnection object at 0x100fad310> SELECT count(*) FROM TESTA (19,)
<mysql.connector.connection.MySQLConnection object at 0x100f9dd90> SELECT count(*) FROM RESA (6,)
<mysql.connector.connection.MySQLConnection object at 0x100f9dd90> SELECT count(*) FROM TESTA (38,)
<mysql.connector.connection.MySQLConnection object at 0x100fad310> SELECT count(*) FROM RESA (3,)
<mysql.connector.connection.MySQLConnection object at 0x100fad310> SELECT count(*) FROM TESTA (19,)
查看从MySQL:
mysql> use testaa;
Database changed
mysql> select count(*) from resa;
+----------+
| count(*) |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)