import time
import mysql.connector
import random
def create_mysql_connection():
conn = mysql.connector.connect(
host="xxxx",
port="3306",
user="xxx",
password="xxx",
database="xxxx"
)
return conn
def read_existing_data(conn, table_name):
cursor = conn.cursor()
query = f"SELECT * FROM {table_name} LIMIT 100"
cursor.execute(query)
existing_data = cursor.fetchall()
cursor.close()
column_names = [column[0] for column in cursor.description]
data_with_column_names = [dict(zip(column_names, data)) for data in existing_data]
return data_with_column_names
def generate_new_data(existing_data):
new_data = {}
column_names = existing_data[0]
for column_name in column_names:
existing_values = [data[column_name] for data in existing_data[1:]]
if column_name == "id":
new_value = int(time.time())
else:
new_value = random.choice(existing_values)
new_data[column_name] = new_value
return new_data
def insert_new_data(conn, table_name, new_data):
cursor = conn.cursor()
cursor.execute(f"SHOW COLUMNS FROM {table_name}")
columns = [column[0] for column in cursor.fetchall() if column[3] != 'PRI']
cursor.close()
if len(columns) != len(new_data)-1:
print("字段数量与数据项数量不一致", len(columns), " ", len(new_data))
return
column_names = ', '.join(columns)
value_placeholders = ', '.join(['%s'] * len(columns))
query = f"INSERT INTO {table_name} ({column_names}) VALUES ({value_placeholders})"
values = [new_data[column] for column in columns]
cursor = conn.cursor()
cursor.execute(query, values)
conn.commit()
cursor.close()
def main(table_name):
conn = create_mysql_connection()
existing_data = read_existing_data(conn, table_name)
new_data = generate_new_data(existing_data)
insert_new_data(conn, table_name, new_data)
conn.close()
if __name__ == "__main__":
table_name = "xxxx"
main(table_name)