mysql_client.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. from sqlalchemy import create_engine, text
  4. from sqlalchemy.dialects.mysql import pymysql
  5. from sqlalchemy.orm import sessionmaker
  6. from sqlalchemy.ext.declarative import declarative_base
  7. from config import database_config
  8. class Mysql(object):
  9. def __init__(self):
  10. host = database_config.MYSQL_HOST
  11. port = database_config.MYSQL_PORT
  12. user = database_config.MYSQL_USER
  13. passwd = database_config.MYSQL_PASSWD
  14. dbname = database_config.MYSQL_DB
  15. self.engine = self._connect(host, port, user, passwd, dbname)
  16. self.engine = create_engine(self.engine)
  17. self._DBSession = sessionmaker(bind=self.engine)
  18. def _connect(self, host, port, user, pwd, db):
  19. client = "mysql+pymysql://" + user + ":" + pwd + "@" + host + ":" + str(port) + "/" + db
  20. return client
  21. @property
  22. def DBSession(self):
  23. return self._DBSession
  24. if __name__ == '__main__':
  25. client = Mysql()
  26. sess = client.DBSession()
  27. sql_tables = text("show tables")
  28. for table in sess.execute(sql_tables).all():
  29. print(table[0])
  30. sql = text("""
  31. SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT
  32. FROM INFORMATION_SCHEMA.COLUMNS
  33. WHERE TABLE_NAME = :table_name;
  34. """)
  35. info = sess.execute(sql, {"table_name": table[0]})
  36. for tb in info:
  37. print(tb)