在sqlalchemy中创建表也非常简单。我们只需实例化一个新的表,提供表名、元数据对象,并指定不同的列。
在本例中,我们创建了一个job表、一个company表和一个person表。person表还通过了foreign kkey链接了其他表,这使数据库在实践SQL连接方面更加有趣。
定义了所有表格之后,我们只需调用MetaData对象的create_all()方法就好了。
生成一些随机数据
虽然我们创建了数据库表,但仍然没有任何数据可用。因此,我们需要生成一些随机数据并将其插入到表中。
class SQLData: #... def populate_tables(self) -> None: jobs_ins = list() companies_ins = list() persons_ins = list() for _ in range(100): record = dict() record['description'] = self.__fake.job() jobs_ins.append(record) for _ in range(100): record = dict() record['name'] = self.__fake.company() record['phrase'] = self.__fake.catch_phrase() record['address'] = self.__fake.street_address() record['country'] = self.__fake.country() record['est_date'] = self.__fake.date_of_birth() companies_ins.append(record) for _ in range(500): record = dict() record['job_id'] = np.random.randint(1, 100) record['company_id'] = np.random.randint(1, 100) record['last_name'] = self.__fake.last_name() record['first_name'] = self.__fake.first_name() record['date_of_birth'] = self.__fake.date_of_birth() record['address'] = self.__fake.street_address() record['country'] = self.__fake.country() record['zipcode'] = self.__fake.zipcode() record['salary'] = np.random.randint(60000, 150000) persons_ins.append(record) self.__conn.execute(self.__tables['jobs'].insert(), jobs_ins) self.__conn.execute(self.__tables['companies'].insert(), companies_ins) self.__conn.execute(self.__tables['persons'].insert(), persons_ins)
现在,我们可以利用Faker库来生成随机数据。
我们只需在for循环中使用随机生成的数据,创建一个由字典表示的新记录。然后将单个记录追加到可用于(多个)insert语句的列表中。
接下来,从连接对象中调用execute()方法,并将字典列表作为参数传递。
就是这样!我们成功实现了类—只需要把类实例化,并调用相关函数来创建数据库。
if __name__ == '__main__': sql = SQLData('localhost','yourdatabase','root','yourpassword') sql.connect() sql.create_tables() sql.populate_tables()
试着做一个查询
剩下的唯一一件事是——需要验证我们的数据库是否已经启动和运行,是否确实包含一些数据。
从基本的查询开始:
SELECT * FROM jobs LIMIT 10;
基本查询结果[图片by作者]
看起来我们的脚本成功了,我们有一个包含实际数据的数据库。
现在,尝试一个更复杂的SQL语句:
SELECT p.first_name, p.last_name, p.salary, j.description FROM persons AS p JOIN jobs AS j ON p.job_id = j.job_id WHERE p.salary > 130000 ORDER BY p.salary DESC;
这个结果看起来很靠谱 – 可以说我们的数据库在正常运行。
结论
在本文中,我们学习了如何利用Python和一些外部库来用随机生成的数据创建我们自己的实践数据库。
虽然可以很容易地下载现有的数据库来开始练习SQL,但使用Python从头创建自己的数据库提供了额外的学习机会。由于SQL和Python经常紧密联系在一起,所以这些学习机会可能会特别有用。
到此这篇关于Python创建SQL数据库流程逐步讲解的文章就介绍到这了,更多相关Python创建SQL内容请搜索
标签:SQLite
相关阅读 >>
python Sqlite3以字典形式返回查询结果的实现方法
android将图片转换存到数据库再从数据库读取转换成图片实现代码
python中sqllite插入numpy数组到数据库的实现方法
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。