v/vlib/db/mysql
2024-04-17 00:33:37 +03:00
..
_cdefs.c.v all: update attributes to use new syntax 2023-11-15 16:16:01 +11:00
_cdefs_nix.c.v db.mysql: add support for the FreeBSD name of the mariadb client library (#20039) 2023-11-30 15:32:44 +02:00
_cdefs_windows.c.v vlib: move the mysql/sqlite/pg/mssql modules under vlib/db (#16820) 2023-01-13 17:02:32 +02:00
consts.c.v all: unwrap const() blocks 2023-11-25 10:02:51 +03:00
enums.v fmt: align the custom values of the enum fields (#19331) 2023-09-12 14:44:38 +03:00
mysql.c.v db.mysql: add ability to prepare and execute statements separately (#20146) 2023-12-11 13:34:20 +02:00
mysql_orm_test.v v,breaking: add ability to read enum, fn, interface and sumtype attributes in compile-time, change builtin StructAttribute to VAttribute (#21149) 2024-03-31 09:14:33 +03:00
mysql_test.v db.mysql: add ability to prepare and execute statements separately (#20146) 2023-12-11 13:34:20 +02:00
orm.c.v time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
prepared_stmt_test.v db.mysql: add ability to prepare and execute statements separately (#20146) 2023-12-11 13:34:20 +02:00
README.md db.mysql: add the exec family of methods (#19132) 2023-08-14 16:18:01 +03:00
result.c.v all: update attributes to use new syntax 2023-11-15 16:16:01 +11:00
stmt.c.v all: unwrap const() blocks 2023-11-25 10:02:51 +03:00
utils.c.v all: update attributes to use new syntax 2023-11-15 16:16:01 +11:00

Purpose:

The db.mysql module can be used to develop software that connects to the popular open source MySQL or MariaDB database servers.

Local setup of a development server:

To run the mysql module tests, or if you want to just experiment, you can use the following command to start a development version of MySQL using docker:

docker run -p 3306:3306 --name some-mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_ROOT_PASSWORD= -d mysql:latest

The above command will start a server instance without any password for its root account, available to mysql client connections, on tcp port 3306.

You can test that it works by doing: mysql -uroot -h127.0.0.1 . You should see a mysql shell (use exit to end the mysql client session).

Use docker container stop some-mysql to stop the server.

Use docker container rm some-mysql to remove it completely, after it is stopped.

Installation of development dependencies:

For Linux, you need to install MySQL development package and pkg-config.

For Windows, install the installer , then copy the include and lib folders to <V install directory>\thirdparty\mysql.

Troubleshooting

If you encounter weird errors (your program just exits right away, without printing any messages, even though you have println('hi') statements in your fn main()), when trying to run a program that does import db.mysql on windows, you may need to copy the .dll file: thirdparty/mysql/lib/libmysql.dll, into the folder of the executable too (it should be right next to the .exe file).

This is a temporary workaround, until we have a more permanent solution, or at least more user friendly errors for that situation.

Basic Usage

import db.mysql

// Create connection
mut connection := mysql.Connection{
	username: 'root'
	dbname: 'mysql'
}
// Connect to server
connection.connect()?
// Change the default database
connection.select_db('db_users')?
// Do a query
get_users_query_result := connection.query('SELECT * FROM users')?
// Get the result as maps
for user in get_users_query_result.maps() {
	// Access the name of user
	println(user['name'])
}
// Free the query result
get_users_query_result.free()
// Close the connection if needed
connection.close()