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)